[Android Pro] 深入理解函数的调用过程——栈帧

时间:2022-03-09 17:46:25

cp ://bbsmax.ikafan.com/static/L3Byb3h5L2h0dHAvYmxvZy5jc2RuLm5ldC94X3BlcnNldmVyYW5jZS9hcnRpY2xlL2RldGFpbHMvNzg4OTc2Mzc=.jpg

每一个函数被调用时,都会为函数开辟一块空间,这块空间就称为栈帧

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

(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 = ;
z = x + y;
return z;
} int main()
{
int a = ;
int b = ;
int ret = Add(a, b);
printf("a+b=%d\n", ret);
system("pause");
return ;
}
 
[Android Pro]   深入理解函数的调用过程——栈帧[Android Pro]   深入理解函数的调用过程——栈帧[Android Pro]   深入理解函数的调用过程——栈帧[Android Pro]   深入理解函数的调用过程——栈帧[Android Pro]   深入理解函数的调用过程——栈帧[Android Pro]   深入理解函数的调用过程——栈帧[Android Pro]   深入理解函数的调用过程——栈帧
[Android Pro]   深入理解函数的调用过程——栈帧

[Android Pro]   深入理解函数的调用过程——栈帧[Android Pro]   深入理解函数的调用过程——栈帧

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

以上就是函数的整个调用过程