GNU as .macro指令扩展

Jür*_*bel 12 macros assembly

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

请注意,这是关于汇编程序.macro指令,如下面的代码所示,而不是关于可以通过cpp扩展的C风格的#define宏.

.macro my_macro src, so, dest
    movl    \so+10(\src), %r8d
Run Code Online (Sandbox Code Playgroud)

Unr*_*gle 3

GNU as 的预处理器不处理 .includeand .macro,因为所有以点开头的内容实际上都是汇编指令;因此,宏扩展是沿着程序汇编执行的,并且不能单独完成,至少不能通过as来完成。

您有以下选择:

  • google 搜索别人的脚本
  • 自己编写(似乎是一个不错的编程练习)
  • 切换到 C 风格宏或 M4

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

  • 这是对问题的一个很好的澄清(+1),但我不能接受“查找/编写自己的”作为解决方案。 (2认同)