有没有办法让 GNU 只在 .S 文件中扩展 .macro 指令,生成另一个没有它们的 .S 文件?类似于 gcc -E 对 C 代码的作用。

请注意,这是关于如下代码中的汇编程序 .macro 指令,而不是关于可以通过 cpp 扩展的 C 样式 #define 宏。

.macro my_macro src, so, dest
    movl    \so+10(\src), %r8d

最佳答案

GNU as 的预处理器 doesn't handle .include.macro ,因为所有以点开头的东西实际上都是汇编指令;因此,宏扩展是在程序汇编中执行的,不能单独完成,至少不能由 as。

您有以下选择:

  • 谷歌搜索别人的脚本
  • 自己写(看起来不错的编程练习)
  • 切换到 C 风格的宏或 M4

  • 默认情况下,当您使用 .S(大写 s)扩展名来提供气体的汇编文件时,会执行 C 样式的宏处理,并且也可以使用命令 cpp 独立调用 C 预处理器

    关于assembly - GNU 作为 .macro 指令扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9064701/

    10-13 03:58