2025年4月14日 星期一 乙巳(蛇)年 正月十五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 汇编

汇编语言WriteStackFrame过程:显示当前过程堆栈帧的内容

时间:03-05来源:作者:点击数:117

Irvine32 链接库有个很有用的过程 WriteStackFrame,用于显示当前过程堆栈帧的内容,其中包括过程的堆栈参数、返回地址、局部变量和被保存的寄存器。

该过程由太平洋路德大学 (Pacific Lutheran University) 的詹姆斯·布林克 (James Brink) 教授慷慨提供,原型如下:

WriteStackFrame PROTO,
    numParam:DWORD,               ;传递参数的数量
    numLocalVal: DWORD,           ;双字局部变量的数量
    numSavedReg: DWORD         ;被保存寄存器的数量

下面的代码节选自WriteStackFrame的演示程序:

  • main PROC
  • mov eax, 0EAEAEAEAh
  • mov ebx, 0EBEBEBEBh
  • INVOKE myProc, 1111h, 2222h ;传递两个整数参数
  • exit
  • main ENDP
  • myProc PROC USES eax ebx,
  • x: DWORD, y: DWORD
  • LOCAL a:DWORD, b:DWORD
  • PARAMS = 2
  • LOCALS = 2
  • SAVED_REGS = 2
  • mov a, 0AAAAh
  • mov b, 0BBBBh
  • INVOKE WriteStackFrame, PARAMS, LOCALS, SAVED_REGS

该调用生成的输岀如下所示: 

还有一个过程名为 WriteStackFrameName,增加了一个参数,保存拥有该堆栈帧的过程名:

WriteStackFrameName PROTO,
    numParam:DWORD,                 ;传递参数的数量
    numLocalVal: DWORD,             ;双字局部变量的数量
    numSavedReg: DWORD,          ;被保存寄存器的数量
    procName:PTR BYTE                ;空字节结束的字符串

Irvine32 链接库的源代码保存在安装目录的 \Examples\Lib32 子目录下,文件名为 Irvine32.asm。Irvine32 链接库安装文件Irvine_7th_Edition.msi 可以从百度网盘(https://pan.baidu.com/s/1yQBqLbViAgs8mCImheCe6g 提取码:6kvk)获取。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门