+ -
当前位置:首页 → 问答吧 → 一个简单函数问题

一个简单函数问题

时间:2011-06-24

来源:互联网

如下代码 
98: int set(int m)
99: {
00401330 push ebp
00401331 mov ebp,esp
00401333 sub esp,44h
00401336 push ebx
00401337 push esi
00401338 push edi
00401339 lea edi,[ebp-44h]
0040133C mov ecx,11h
00401341 mov eax,0CCCCCCCCh
00401346 rep stos dword ptr [edi]
100: //int m=1;
101: int n = m++ + m++;
00401348 mov eax,dword ptr [ebp+8]
0040134B add eax,dword ptr [ebp+8]
0040134E mov dword ptr [ebp-4],eax
00401351 mov ecx,dword ptr [ebp+8]
00401354 add ecx,1
00401357 mov dword ptr [ebp+8],ecx
0040135A mov edx,dword ptr [ebp+8]
0040135D add edx,1
00401360 mov dword ptr [ebp+8],edx
102: return n;
00401363 mov eax,dword ptr [ebp-4]
103: }
在上面代码中 [ebp-4] 是m的值 传入的参数  
如下
00401386 push ebx
00401387 push esi
00401388 push edi
00401389 lea edi,[ebp-44h]
0040138C mov ecx,11h
00401391 mov eax,0CCCCCCCCh
00401396 rep stos dword ptr [edi]
106: //char chTest1[255]={"myhelloworld"};
107: //char chTest2[255]={"wo"};
108: //strstr(chTest1,chTest2);
109: int res =set(1);
00401398 push 1 //传入参数
 
[ebp+8] 是n的值,,我很纠结 什么时候 把N 放在这个位置了实在没找到,,,,我是菜鸟,,请各位大神,帮忙

作者: xuexi1028   发布时间: 2011-06-24

int n = m++ + m++;

[ebp-4] 为n,局部变量;
[ebp+8] 为m,输入参数。

作者: G_Spider   发布时间: 2011-06-24

E 搞错了LS 的说的对 ,,但是能解释下原因吗 有显式的进栈了吗

作者: xuexi1028   发布时间: 2011-06-24