作为一个疯狂的汇编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
但是问题却来了,怎么看编译结果呢?(在工程名后点属性,跟着蓝线紫线走)
点