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

文章目录

  • 一、函数栈帧的创建
  • 寄存器
  • 函数调用是结束后怎么返回的?

一函数栈帧的创建

1.寄存器 

        函数栈帧

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

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

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

(C语言底层逻辑)函数栈帧的创建和销毁讲解_第1张图片

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

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

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

(C语言底层逻辑)函数栈帧的创建和销毁讲解_第2张图片

 

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

                                      cc cc cc cc~~

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

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

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


你可能感兴趣的:(c语言,开发语言,后端)