栈帧的创建与销毁
这里我们写一个简单的加法函数来分析:
#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 c=0;
c=Add(a,b);
printf("%d\n",c);
system("pause");
return 0;
}
要研究函数的调用过程,我们需要用到对应的汇编代码,见下图(第一部分)
第一步:为main函数创建栈帧
首先栈帧的维护需要用到ebp和esp两个寄存器
调用函数时,ebp指向栈底,esp指向栈顶
第二步:准备对Add函数的调用
对应的反汇编代码(第二部分)
进入Add函数
对应的反汇编代码(第三部分)