简单理解栈帧结构
来源:互联网 发布:p2p网络电视 编辑:程序博客网 时间:2024/05/22 05:10
重点内容
本图片为栈空间的开辟,以及释放,其中可以总结几点:
1. 形参实例化的顺序是从右往左的。
2. 形参实例化形成的临时变量在两个栈帧之间。
3. 函数中的变量都叫局部变量,因为函数调用完毕,栈帧结构被释放,栈帧结构的变量也都随即被释放。
4. call:将当前正在执行的指令的下一条地址压入栈中,随即call(跳转)jmp至指定函数。
5. ret:pop(弹出)栈顶,将栈顶的值弹出,且将值写入eip。
6. 函数的返回值的返回,函数定义的变量都是临时变量,所以是通过公共寄存器来返回。
#include<stdio.h>int Add(int x,int y){int z = x + y; return z;}int main(){int a = 0xAAAAAAAA;int b = 0xBBBBBBBB;int c =Add(a,b);printf("ret = %0x\n",Add(a,b));return 0;}//用访问地址的形式修改参数#include<stdio.h>int Add(int x,int y){ int *p=&x; p++; *p=5; return x+y;}int main(){int a = 10;int b = 10;int c =Add(a,b);printf("ret = %d\n",Add(a,b));return 0;}
这里写图片描述
![`
阅读全文
0 0
- 简单理解栈帧结构
- 分布式应用程序结构简单理解
- 分布式应用程序结构简单理解
- 三层结构的简单理解
- Feistel 密码结构简单理解
- 结构体的简单理解
- 分布式应用程序结构简单理解
- .net三层结构的简单理解
- C#:枚举、结构与接口简单理解
- for in结构的简单理解
- 代理模式的简单理解(结构型)
- CSAPP之栈帧结构理解
- Computer.硬盘:简单理解磁盘的物理结构
- 深刻理解linux内核调用栈、栈帧结构
- 《深入理解Java虚拟机之栈帧的结构》
- 《深入理解Java虚拟机》——栈帧结构
- 栈链式结构简单操作
- 简单理解全栈工程师
- 基于注解和Aop的自动参数校验的实现
- 扩展欧几里得 a*x+b*y=c的解
- HDFS体系结构
- 时间复杂度和空房间复杂度
- 文件下载解决中文乱码(十二)
- 简单理解栈帧结构
- 【SpringBoot】2小时学会SpringBoot学习笔记(第5章 数据库操作 上 )
- 【Scikit-Learn 中文文档】46 模型选择:选择估计量及其参数
- as打开时出现The environment variable JAVA_HOME (with The value of C:\Java\jdk1.8.0_101\bin) does not poin
- 安装Caffe-0.999
- 玩家
- 【Scikit-Learn 中文文档】47 无监督学习: 寻求数据表示
- Long Dominoes
- 35 个 Java 代码性能优化总结