有没有办法让 GNU as 只在.S文件中扩展.macro指令,生成另一个没有它们的.S文件?与 gcc -E 对C代码的作用类似。
请注意这是关于汇编程序.macro指令,如下面的代码, not 关于可以通过cpp扩展的C风格的#define宏。
.macro my_macro src, so, dest
movl \so+10(\src), %r8d
答案 0 :(得分:2)
GNU作为预处理器doesn't handle .include
和.macro
,因为以点开头的所有内容实际上都是汇编程序指令;因此,宏程序扩展是按程序组装执行的,不能单独完成,至少应该是as。
您有以下选择:
默认情况下,当您使用.S
(大写s)扩展名来处理用于输入气体的程序集文件时,将执行C样式宏处理,并且还可以使用命令{{1}独立调用C预处理程序}
答案 1 :(得分:0)
也许您可以使用“cpp
”来评估宏:
> cpp -P file.S
或在宏扩展后组装:
> cpp -P file.S | as -o file.o