您的位置:首页 > 其它

深入理解函数的调用过程——栈帧

2017-12-25 22:32 423 查看
每一个函数被调用时,都会为函数开辟一块空间,这块空间就称为栈帧



首先,我们了解一下不同种类的寄存器

(1)eax,ebx,ecx,edx :通用寄存器

(2)ebp:存放指向函数栈帧栈底的地址

(3)esp:存放指向函数栈帧栈顶的地址

(4)eip:程序计数器——保存程序当前正在执行指令的下一个指令的地址

接着我们以下面这段代码为例,深入到函数的调用过程中去:

#include <stdio.h>
#include <windows.h>

int Add(int x, int y)
{
      int z = 0;
      z = x + y;
      return z;
}

int main()
{
      int a = 10;
      int b = 20;
      int ret = Add(a, b);
      printf("a+b=%d\n", ret);
      system("pause");
      return 0;
}
















函数调用完成后,释放栈帧。

以上就是函数的整个调用过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: