·代码示例
我们用一段简单的代码来进行测试,代码如下:
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int ret = 0;
ret = Add(a, b);
printf("ret=%d\n", ret);
system("pause");
return 0;
}
我们用vs进入调试,打开【调用栈堆】后会发现main函数在__tmainCRTStartup函数中被调用,而__tmainCRTStartup函数则是在mainCRTStartup中被调用,这两个在后面的说明中就保留mainCRTStartup入口。
我们都知道函数在被调用的过程中,每一次调用都要开辟一块内存空间。那么这一块内存空间是由谁来进行维护的呢?我们会答是由操作系统来完成维护的,但是这还并不准确,那么我们就要了解一下寄存器的概念。
·什么是寄存器
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)。——来自百度百科
看完概念以后,我们再去想,一个函数如果要去返回一个值,但是被调用的函数销毁后是什么来存储这个值的。其实也是寄存器,这样的话其实也就不难理解了。并且我们下面对于函数调用的理解也离不开寄存器。
·函数调用过程
·mian函数
我们进入调试转入到反汇编同时打开监视和内存。如下图: