Irvine32 链接库有个很有用的过程 WriteStackFrame,用于显示当前过程堆栈帧的内容,其中包括过程的堆栈参数、返回地址、局部变量和被保存的寄存器。
该过程由太平洋路德大学 (Pacific Lutheran University) 的詹姆斯·布林克 (James Brink) 教授慷慨提供,原型如下:
下面的代码节选自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,增加了一个参数,保存拥有该堆栈帧的过程名:
Irvine32 链接库的源代码保存在安装目录的 \Examples\Lib32 子目录下,文件名为 Irvine32.asm。Irvine32 链接库安装文件