函数栈帧的创建与销毁-(基于C语言的VS2019研究)

(1)寄存器
这里对于寄存器不进行深入探究,只需知道寄存器分为以下8种。
函数栈帧的创建与销毁-(基于C语言的VS2019研究)_第1张图片

其中EBP和ESP两个寄存器存放的是地址,这两个地址是用来维护函数栈帧的
EBP:栈底指针
ESP:栈顶指针

(2)函数调用都是在栈上创建空间的。
函数栈帧的创建与销毁-(基于C语言的VS2019研究)_第2张图片
(3)栈都是从高地址往低地址分配内存的
(4)函数栈帧的创建和销毁是基于栈所实现的

所谓栈,是一种数据结构,具有先进后出的特点。在函数栈帧创建过程中,内存从高地址开始使用,越后面创建的函数栈帧或压栈数据,所存储的空间地址越低。

(5)main函数是会被其他函数调用的,在不同编译器中调用main的函数也不同
在VS2019中:
先点击逐语句————>再按下 crtl+ alt+c,完成调用堆栈窗口调出
函数栈帧的创建与销毁-(基于C语言的VS2019研究)_第3张图片
函数栈帧的创建与销毁-(基于C语言的VS2019研究)_第4张图片
此时可以看到main函数被调用了

3.函数栈帧创建与销毁的过程

以如下的加法函数代码块来演示C语言在vs2013上的过程:

#include 

int add(int x, int y)
{
	int t;
	t = x + y;
	return t;
}

int main()
{
	int a = 1;
	int b = 2;
	int c = 0;

	c = add(a, b);

	printf("%d\n",c);
	return 0;
}

你可能感兴趣的:(【C语言】)