(C语言底层逻辑)函数栈帧的创建和销毁讲解

文章目录


一函数栈帧的创建

1.寄存器 

        函数栈帧

        ebp,esp 这两个寄存器中存放的是地址,这2个地址是用来维护函数栈帧的。

每一个函数调用,都要在栈区创建一个空间。

        每一个值都是通过压栈的方法由高地址往低地址存储。

 esp:栈顶指针   ebp:栈低指针

 push:    压栈:给栈顶放一个元素

 pop:      出栈:从栈顶删除一个元素

 内存中栈帧的初始化为 cc cc cc cc

                                      cc cc cc cc~~

所以在发生越界或其他操作时,运行会出现 烫烫烫~~

 函数调用是结束后怎么返回的?

如Add函数的返回值在销毁前会返回一个值,放在一个寄存器中,这个寄存器会将该值压在main函数下面


猜你喜欢

转载自blog.csdn.net/qq_62662919/article/details/121616561