您的位置:首页 > 其它

函数的调用过程(栈帧)

2017-11-12 18:11 323 查看

认识c/c++程序占用内存的分布:



简单看一下下面的程序:

#include<stdio.h>
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int res=Add(a, b);
printf("%d\n", res);
system("pause");
return 0;
}


f10调试后,打开查看堆栈窗口:


说明:main函数也是被其他函数调用的。

下面进入主题,函数调用过程:


分析主函数的栈帧:


注意call指令:


执行call指令时,f11走到下图所示:


再按f11,进入Add函数:


再看返回z是如何返回的

出栈的时候,就使用pop指令依次让edi,esi,ebx,出栈。再将ebp赋给esp,pop 出edp,再回到main函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: