GNU as .macro指令扩展

时间:2012-01-30 13:35:20

标签: assembly macros

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

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

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

2 个答案:

答案 0 :(得分:2)

GNU作为预处理器doesn't handle .include.macro,因为以点开头的所有内容实际上都是汇编程序指令;因此,宏程序扩展是按程序组装执行的,不能单独完成,至少应该是as。

您有以下选择:

  • 在Google上搜索其他人的脚本
  • 编写自己的(似乎是一个很好的编程练习)
  • 切换到C风格的宏或M4

默认情况下,当您使用.S(大写s)扩展名来处理用于输入气体的程序集文件时,将执行C样式宏处理,并且还可以使用命令{{1}独立调用C预处理程序}

答案 1 :(得分:0)

也许您可以使用“cpp”来评估宏:

> cpp -P file.S

或在宏扩展后组装:

> cpp -P file.S | as -o file.o

相关问题