有没有办法让 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。
您有以下选择:
默认情况下,当您使用
.S
(大写 s)扩展名来提供气体的汇编文件时,会执行 C 样式的宏处理,并且也可以使用命令 cpp
独立调用 C 预处理器关于assembly - GNU 作为 .macro 指令扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9064701/