汇编–C++/c返回值代码分析
函数调用、返回值运用的代码
10: main()
11: {
00401050 push ebp
00401051 mov ebp,esp
00401053 sub esp,44h
00401056 push ebx
00401057 push esi
00401058 push edi
00401059 lea edi,[ebp-44h]
0040105C mov ecx,11h
00401061 mov eax,0CCCCCCCCh
00401066 rep stos dword ptr [edi]
12:
13: int m;
14: m=plus(1,3);
00401068 push 3
0040106A push 1
0040106C call @ILT+0(plus) (00401005)
00401071 add esp,8
00401074 mov dword ptr [ebp-4],eax //这个是存入数据的语句,这个时候调用plus函数已经堆栈平衡了,这层调用是发生在main函数内的 ebp-4是变量,一般返回值都是写在eax内的
15: printf(“m=%d”,m);
00401077 mov eax,dword ptr [ebp-4]
0040107A push eax
0040107B push offset string “m=%d” (0042201c)
00401080 call printf (004010b0)
00401085 add esp,8
16: __asm
17: {
18: mov eax,eax
00401088 mov eax,eax
19: }
20: return;
21:
22: }
0040108A pop edi
0040108B pop esi
0040108C pop ebx
0040108D add esp,44h
00401090 cmp ebp,esp
00401092 call __chkesp (00401130)
00401097 mov esp,ebp
00401099 pop ebp
0040109A ret