C/C++代码被 VS 2010 优化掉了,如何关闭优化?

作者作为一个C/C++和汇编爱好者,在使用Visual Studio 2010时发现Debug模式下反汇编结果混乱,而Release模式下代码被高度优化,main函数操作被浓缩。他探讨了如何查看和关闭编译优化,以便更好地理解和分析编译结果。
摘要由CSDN通过智能技术生成

作为一个疯狂的汇编C/C++爱好者,写完代码看看被编译成什么自然很好奇,

打开反汇编调试,Debug给的东西很乱:


比如断点指令一个劲填充栈区防止程序跑飞了。

int main(void)
{
00351350  push        ebp  
00351351  mov         ebp,esp  
00351353  sub         esp,160h  
00351359  push        ebx  
0035135A  push        esi  
0035135B  push        edi  
0035135C  lea         edi,[ebp-160h]  
00351362  mov         ecx,58h  
00351367  mov         eax,0CCCCCCCCh  
0035136C  rep stos    dword ptr es:[edi]  
还比如程序运行完成后要清理环境:

	return 0;
00351488  xor         eax,eax  
}
0035148A  pop         edi  
0035148B  pop         esi  
0035148C  pop         ebx  
0035148D  mov         esp,ebp  
0035148F  pop         ebp  
00351490  ret  
--- No source file ---------------------
00351491  int         3  

这样总是给人一种分心的感觉

所以打开看看Release 版本看看也是很自然的原因。

因为main函数内部的操作对外界没有影响,所以被浓缩为下面两句话也是可以理解的:

01381000  xor         eax,eax  
}
01381002  ret  

但是问题却来了,怎么看编译结果呢?(在工程名后点属性,跟着蓝线紫线走)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值