-
-
Debug模式下怎样去掉编译器的优化(找到答案了,大家参考下)
-
发表于:
2007-7-14 01:13
4668
-
Debug模式下怎样去掉编译器的优化(找到答案了,大家参考下)
在VC的Debug模式下,编译器会在函数开始的地方插入一些保存寄存器值的压栈指令,我以前记得在某个地方看到过在函数前加入某个关键字可以去掉优化,可惜忘了,在网上搜了好长时间也没看到,只好到论坛求助,先谢谢大家了。
答案:
如果必要的话,进入函数时编译器会产生代码来保存ESI,EDI,EBX,EBP寄存器,退出函数时则产生代码恢复这些寄存器的内容。naked call不产生这样的代码。
naked call不是类型修饰符,故必须和_declspec共同使用,如下:
__declspec( naked ) int func( formal_parameters )
{
// Function body
}
知道这一点在有些时候是会有帮组的,比如我们要定位函数前的某个变量,在Debug模式下和Release模式下就不用区别对待了。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课