”复杂”的栈帧
来源:互联网 发布:sql表添加列在某个字段 编辑:程序博客网 时间:2024/06/10 22:02
栈帧-函数的调用过程
这部分比较难懂,下面就用一段代码来描述吧!
先来说一下内存吧!
#define _CRT_SECURE_NO_WARNINGS 1#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 ret = Add(a, b); printf("ret = %d\n", ret); return 0;}
函数的调用过程要为函数开辟栈空间,用于本次函数的调用中临时变量的保存、现场保护。这块栈空间我们称之为函数栈帧。
这里我们必须了解两个问题:
)
当我们要详细研究函数调用过程,必须得对应汇编代码。(启动调试,点击转到反汇编即可)
当讲程序调试的时候,查看【调用堆栈】
1.先来看main函数栈帧的创建。
以图为例:
2.. 接下来是Add函数的调用。
参数传递过程:
执行call指令的时候按F11,来到了这里。
再按F11就进入Add函数的执行代码处
接下来的是函数返回部分:
以上就是我对栈帧的理解了,还算详细吧。如有不足,请多指教了!!
阅读全文
0 0
- ”复杂”的栈帧
- 栈和队列的两个复杂复杂操作
- 复杂的大数据技术栈
- 复杂的GridBagLayout
- 复杂的心情。
- 好复杂的心情...
- 一个复杂的工程进度
- 复杂的函数指针
- 内心复杂的一天。。。。。。。。
- 复杂的查询
- 复杂的GridBagLayout
- 复杂的drectx
- SVG,复杂的玩意
- 复杂的一天
- 有些复杂的SQL
- 复杂的条件
- Java的复杂数据类型
- 复杂的中断系统
- spark学习-35-Spark的Map任务输出跟踪器MapOutputTracker
- C++多任务编程简明教程 (1)
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解
- Algorithm-week11
- SparkStreaming中DStream的概念
- ”复杂”的栈帧
- 产品经理,你的「核心竞争力」是?
- Freezing of tasks [Kernel Documents]
- 本周开课 | 10年运营专家亲授,掌握9类运营的核心技能,强化运营实力
- python3.X 自然语言处理基础知识
- Fragment+标题
- TNSNAMES.ora
- 一周内登榜 App Store,网易的《终结者2》是如何火起来的?
- SAP Adobe form