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


【c语言|(C语言底层逻辑)函数栈帧的创建和销毁讲解】
文章目录

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

一函数栈帧的创建 1.寄存器
函数栈帧
ebp,esp 这两个寄存器中存放的是地址,这2个地址是用来维护函数栈帧的。
每一个函数调用,都要在栈区创建一个空间。
每一个值都是通过压栈的方法由高地址往低地址存储。
c语言|(C语言底层逻辑)函数栈帧的创建和销毁讲解
文章图片

esp:栈顶指针ebp:栈低指针
push:压栈:给栈顶放一个元素
pop:出栈:从栈顶删除一个元素
c语言|(C语言底层逻辑)函数栈帧的创建和销毁讲解
文章图片


内存中栈帧的初始化为 cc cc cc cc
cc cc cc cc~~
所以在发生越界或其他操作时,运行会出现 烫烫烫~~
函数调用是结束后怎么返回的?
如Add函数的返回值在销毁前会返回一个值,放在一个寄存器中,这个寄存器会将该值压在main函数下面

    推荐阅读