Call Stack简介
2010-11-04 08:44:04 来源:WEB开发网核心提示:假设和说明本文以32Bit的X86 Windows为原型进行说明,栈的增长方向为高地址向低地址,Call Stack简介,开发环境为Visual Studio,语言是C++,点击Windows子菜单,然后分别选择Memory1、Disassembly和Registers,没有涉及到Delphi、Borland C++、
假设和说明
本文以32Bit的X86 Windows为原型进行说明。栈的增长方向为高地址向低地址。
开发环境为Visual Studio,语言是C++。没有涉及到Delphi、Borland C++、Visual Basic等。
文中的任何栈地址、寄存器值以及内存址,都会与大家的环境不同。这些值是基于笔者当前环境的当前镜像。
另外一篇文章会介绍C call、Standard call、Fast call和This call。本文默认基于C call。
示例代码
C++代码
int FuncOne(int a, int b)
{
int sum;
sum = a + b;
return sum;
}
void main()
{
FuncOne(0x100, 0x200);
}
对应的汇编代码
操作方式
· 用Visual Studio建立一个Visual C++的Win32 Console工程,在主文件中,删除所有代码,把上述C++代码粘贴上。
· 设置端点在main下面的左括号上,如下图
· 按F5运行程序,当断点触发时,如下图
· 点击Visual Studio的主菜单“Debug”,点击Windows子菜单,然后分别选择Memory1、Disassembly和Registers。如下图红色部分。
更多精彩
赞助商链接