int sum(int a,int b){
//函数左括号:给当前函数开辟栈帧空间
//函数右括号:归还栈空间,并回到原来调用它的函数
int temp=0;
temp = a+b;
return temp;
}
/*
sum的汇编代码
push ebp;
mov ebp,esp; 将ebp指向esp的位置,并将ebp的原地址保存
sub esp,4Ch; 开辟栈帧空间
mov dword ptr[ebp-4],0; 存temp=0
mov eax,dword ptr[ebp+0Ch]; 取b放入eax
add eax,dword ptr[ebp+8]; 取a和eax的值相加
mov dword ptr[ebp-4]; 将计算结果放入temp
mov eax, dword ptr[ebp-4]; return
mov esp,ebp; esp回退到ebp,开辟的栈空间归还系统
pop ebp
*/
int main(){
int a=10;
int b=20;
int ret = sum(a,b);
cout << "ret: " << ret << endl;
return 0;
}
/*
main汇编代码
mov dword ptr[ebp-4], 0Ah; int占4个字节,将10压入ebp所指向的位置
mov dword ptr[ebp-8], 14h; int占4个字节,将20压入ebp所指向的位置
mov eax,dword ptr[ebp-8]; 将a,b压入栈内
push eax;
mov eax,dword ptr[ebp-4];
push eax;
call sum; 调用sum函数
add esp,8; 保存call的下一行地址
mov dword ptr[ebp-0Ch],eax; 将经过sum函数的计算结果eax返回给ret
*/

版权声明:本文为qq_43788498原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。