WinDbg:栈帧的含义
2024-08-26 13:30:18
转自:http://www.cppblog.com/weiym/archive/2012/06/07/177958.html
栈从高地址向低地址生长, __stcall和__cdecl调用约定都是函数参数从右到左入栈。
某函数,比如:
int add(int a, int b) { return a + b;}
在我们调用 add(1, 2)时:
- 从栈高地址到低地址入栈,依次是:参数2入栈, 参数1入栈,返回地址(ret address)入栈
- 接着跑到 add 函数执行入口代码 push ebp 即上一函数帧的基址(ebp)入栈
- 然后 mov ebp, esp 将当前的栈指针值赋给ebp,即保存当前的栈指针给ebp,这样可以用新的 ebp 操作当前函数的局部变量,该函数内部再调用某个函数时也能通过新 ebp 知道上一函数的基栈地址,所有函数调用都以此类推
所以从堆栈低地址到高地址依次表示:ebp(上一函数的栈帧基址)、ret address、parameter 1、 parameter 2...
最新文章
- char.js
- Effective Java 读书笔记之四 泛型
- Python模块常用的几种安装方式
- 树莓派wiringPi库详解
- 某代理网站免费IP地址抓取测试
- VirtualBox的网络配置,Host Only+NAT方式 (zhuan)
- 解决json包含html标签无法显示的问题
- hiho 1182 : 欧拉路·三
- nodejs端口被占用。
- HDU 4283 You are the one(间隔DP)
- Android: 工具使用备忘
- arcEngine开发之查询的相关接口
- 关于vue移动端的适配
- Maven 多模块引用版本的问题 java.lang.NoSuchMethodError
- object-fit 属性的用法介绍
- spark获取时间
- MT【62】柯西求三角值域
- Django缓存系统
- LInux 阿里云系统遇到挖矿程序
- 【Redis】Redis学习(六) Redis 基本运维