【c语言|(C语言底层逻辑)函数栈帧的创建和销毁讲解】
文章目录
- 一、函数栈帧的创建
- 寄存器
- 函数调用是结束后怎么返回的?
一函数栈帧的创建 1.寄存器
函数栈帧
ebp,esp 这两个寄存器中存放的是地址,这2个地址是用来维护函数栈帧的。
每一个函数调用,都要在栈区创建一个空间。
每一个值都是通过压栈的方法由高地址往低地址存储。
文章图片
esp:栈顶指针ebp:栈低指针
push:压栈:给栈顶放一个元素
pop:出栈:从栈顶删除一个元素
文章图片
内存中栈帧的初始化为 cc cc cc cc
cc cc cc cc~~
所以在发生越界或其他操作时,运行会出现 烫烫烫~~
函数调用是结束后怎么返回的?
如Add函数的返回值在销毁前会返回一个值,放在一个寄存器中,这个寄存器会将该值压在main函数下面
推荐阅读
- C语言|vscode配置C语言环境
- YY|【C语言】 扫雷游戏(保姆级的实现过程)
- 链表|顺序表代码实现(跑路人笔记)
- C语言|【C终章】函数栈帧的创建和销毁
- 学习记录|C语言学习(1)VScode配置C语言环境(超详细)
- C语言|【C语言】#define定义的标识符和宏
- CS 505 概率解答
- ICS 53 虚拟内存管理
- CST8237讨论游戏开发