1.程序示例
#include <iostream>
using namespace std;
int sum(int a, int b)
{
int temp = 0;
temp = a + b;
return temp;
}
int main()
{
int a = 10;
int b = 20;
int ret = sum(a, b);
cout << "ret:" << ret << endl;
return 0;
}
2. 解析函数调用堆栈详细过程
- 由于转换成的汇编指令为mov,并且知道具体的地址,所以main()函数中的前两个程序语句定义的变量不用从栈顶压(压入栈顶用push指令), 只需要由低地址向高地址扩展
- ret的值,需要通过函数调用计算得到,首先需要给形参分配内存空间, 转换成汇编语言为压栈指令
- 要注意esp需要不断进行调整,永远指向栈顶, 然后进行函数的调用, 汇编语言如