【问题标题】:Macros in x86 assembly codingx86 汇编编码中的宏
【发布时间】:2009-05-13 13:29:25
【问题描述】:

谁能解释一下如何在 x86 汇编编码中使用宏

【问题讨论】:

  • 建议 - 这是一个非常模糊的问题。你能说得更具体一点吗?
  • 另外,如果你说你正在使用哪个编译器可能会有所帮助,例如MASM。

标签: assembly macros x86


【解决方案1】:

这取决于您使用的编译器。

通常,汇编器宏将采用以下形式;

begin MyMacro %1, %2
   mov eax, %1
   add eax, %2
end

这将存在于源代码的标头部分中,除非被引用,否则不会输出任何代码。您可以将其与其他汇编器内联。

mov ecx, 88
MyMacro ecx, 12
asr ecx, 3

在这种情况下,“参数”%1 和 %2 将被替换为 ecx 和 12,生成以下输出

mov ecx, 88
mov eax, ecx
add eax, 12
asr ecx, 3

【讨论】:

    【解决方案2】:

    这是一个非常广泛的问题。有无数种使用宏的方法。一些汇编语言开发人员大量使用它们,有些人讨厌它们。

    最常见的方法之一是将宏用于函数序言和尾声。另一种是使用它们来获取堆栈上的保存参数。

    【讨论】: