int Add(int x, int y)
{
00401770 push ebp
00401771 mov ebp,esp
00401773 sub esp,0CCh
00401779 push ebx
0040177A push esi
0040177B push edi
0040177C lea edi,[ebp-0Ch]
0040177F mov ecx,3
00401784 mov eax,0CCCCCCCCh
00401789 rep stos dword ptr es:[edi]
int z = 0;
00401796 mov dword ptr [ebp-8],0
z = x + y;
0040179D mov eax,dword ptr [ebp+8]
004017A0 add eax,dword ptr [ebp+0Ch]
004017A3 mov dword ptr [ebp-8],eax
return z;
004017A6 mov eax,dword ptr [ebp-8]
}
004017A9 pop edi
004017AA pop esi
004017AB pop ebx
004017AC add esp,0CCh
004017B2 cmp ebp,esp
004017B4 call 00401244
004017B9 mov esp,ebp
004017BB pop ebp
004017BC ret
Add函数初始化栈帧:
c复制代码
int Add(int x, int y)
{
00401770 push ebp
00401771 mov ebp,esp
00401773 sub esp,0CCh
00401779 push ebx
0040177A push esi
0040177B push edi
0040177C lea edi,[ebp-0Ch]
0040177F mov ecx,3
00401784 mov eax,0CCCCCCCCh
00401789 rep stos dword ptr es:[edi]
Add函数使用参数计算,返回值写入寄存器eax
c复制代码
int z = 0;
00401796 mov dword ptr [ebp-8],0
z = x + y;
0040179D mov eax,dword ptr [ebp+8]
004017A0 add eax,dword ptr [ebp+0Ch]
004017A3 mov dword ptr [ebp-8],eax
return z;
004017A6 mov eax,dword ptr [ebp-8]
Add函数栈帧销毁:
c复制代码
004017A9 pop edi
004017AA pop esi
004017AB pop ebx
004017AC add esp,0CCh
004017B2 cmp ebp,esp
004017B4 call 00401244
004017B9 mov esp,ebp
004017BB pop ebp
004017BC ret