函数栈帧的创建和销毁——仅供欣赏

简介: 函数栈帧的创建和销毁——仅供欣赏

演示代码

#include <stdio.h>

int add(int x, int y)
{
  int z = 0;
  z = x + y;
  return z;
}
int main()
{
  int a = 10;
  int b = 20;
  int c=0;
  c = add(a, b);
  printf("%d\n", c);
  return 0;
}

esp,ebp两个寄存器

esp用来维护栈顶的指针

ebp用来维护栈顶的指针

从这里可以看出来,main函数是被mainCRTStartup函数调用的。

下面执行第一步,push ebp意思是向栈顶压入一个数值ebp

上面的这个就完成了main函数的栈帧,包括对变量a,b,c的开辟。

下面展示对add函数栈帧的开辟

下面这个是add函数的栈帧的销毁

最后这个是main函数的销毁

pop的意思是出栈。


相关文章
|
4月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
277 0
|
6月前
|
UED 容器
124.[HarmonyOS NEXT 实战案例一:SideBarContainer] 侧边栏容器实战:新闻阅读应用侧边栏布局 进阶篇
在基础篇中,我们学习了如何使用HarmonyOS NEXT的`SideBarContainer`组件创建新闻阅读应用的基本侧边栏布局。本篇教程将深入探讨如何为新闻阅读应用添加更多交互功能和状态管理,提升用户体验。
125 1
124.[HarmonyOS NEXT 实战案例一:SideBarContainer] 侧边栏容器实战:新闻阅读应用侧边栏布局 进阶篇
|
存储 缓存 Java
深度解密 Python 虚拟机的执行环境:栈帧对象
深度解密 Python 虚拟机的执行环境:栈帧对象
273 13
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
518 1
|
Java 程序员 C++
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
160 0
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
|
存储 编译器 容器
函数栈帧的创建和销毁讲解
函数栈帧的创建和销毁讲解
226 0
|
索引 Python
python类型错误(TypeError)
【5月更文挑战第1天】
1401 2
|
大数据 Python
深入解析Python中的生成器(Generator) 及其高级应用
深入解析Python中的生成器(Generator) 及其高级应用
523 0
|
Python
浅谈Python面向对象中的继承与mro
浅谈Python面向对象中的继承与mro
94 0
|
存储 索引 Python
深度解密函数的 local 名字空间(当 Python 中混进一只薛定谔的猫……)
深度解密函数的 local 名字空间(当 Python 中混进一只薛定谔的猫……)
202 0