谁有兴趣解释一下Visual Studio生成的汇编代码?
在调试中,反编译的代码如下:
我一直有点纳闷的是:
为什么所有的函数都要在开始的时候多分配那么多空间呢?
例如以下这个代码中,只有一个局部变量 p ,按理说只需要4个字节就够了啊,为什么要
分配D8h个空间了,未免太乱费了吧?
int _tmain(int argc, _TCHAR* argv[])
{
00411C40 55 push ebp
00411C41 8B EC mov ebp,esp
00411C43 81 EC D8 00 00 00 sub esp,0D8h //就是这里,为什么要分配这么多空间呢?
00411C49 53 push ebx
00411C4A 56 push esi
00411C4B 57 push edi
00411C4C 8D BD 28 FF FF FF lea edi,[ebp+FFFFFF28h]
00411C52 B9 36 00 00 00 mov ecx,36h
00411C57 B8 CC CC CC CC mov eax,0CCCCCCCCh
00411C5C F3 AB rep stos dword ptr [edi]
C *p=new C;
00411C5E 6A 01 push 1
00411C60 E8 E6 F8 FF FF call 0041154B
00411C65 83 C4 04 add esp,4
00411C68 89 85 2C FF FF FF mov dword ptr [ebp+FFFFFF2Ch],eax
00411C6E 8B 85 2C FF FF FF mov eax,dword ptr [ebp+FFFFFF2Ch]
00411C74 89 45 F8 mov dword ptr [ebp-8],eax
p->f();
00411C77 8B 4D F8 mov ecx,dword ptr [ebp-8]
00411C7A E8 48 F5 FF FF call 004111C7
}
当然,我还发现所有的函数都是这样,分配的空间要远远多于所需要的空间。有谁能帮我解答一下没有?谢谢各位了。