【问题标题】:Convert assembly language macros to plain assembly language将汇编语言宏转换为普通汇编语言
【发布时间】:2013-03-12 18:43:17
【问题描述】:

在 MASM 中,是否可以将宏指令转换为相应的汇编语言指令?我想把 MASM 的宏指令转换成普通的汇编语言指令,这样我就可以看到宏是如何工作的。

例如,我想把这些宏指令转换成对应的汇编语言指令(不带宏):

.if(x > 5)
    mov eax, x
.else
    mov ebx, x
.endif

【问题讨论】:

  • 当然,最简单的方法是让 MASM 组装文件并让它生成一个输出列表。我忘记了如何做到这一点——我已经很多年没有使用 MASM——但我知道曾经有一个命令行开关来生成输出列表。

标签: assembly macros masm


【解决方案1】:

我打算建议像500-InternalServerError 那样“生成列表”,但在验证之后,这将不起作用 - 列表仅包含您的说明,而不包含 MASM 生成的说明。以下是什么起作用:

1) 使用调试信息进行组装:

ml /c /Zi file.asm

2) 使用dumpbin(或其他反汇编程序)进行反汇编:

dumpbin /disasm file.obj

对于上面的例子,它产生:

$$000000:
  00000000: 83 3D 00 00 00 00  cmp         dword ptr [x],5
            05
  00000007: 76 04              jbe         @C0001
  00000009: 8B C2              mov         eax,edx
  0000000B: EB 02              jmp         @C0003
@C0001:
  0000000D: 8B DA              mov         ebx,edx

【讨论】: