所以我有这个.S文件,它是一个最小的片段(模数实际编译和链接)来显示问题:
.altmacro
.macro thing word
.asciz "\word\()"
.endm
.section .rodata
.global data_stuff
.type data_stuff, %object
data_stuff:
thing foo
thing bar
thing @
thing baz
.asciz "@"
最终列表中的结果是:
00004c94 <data_stuff>:
4c94: 006f6f66 00726162 7a616200 ff004000 foo.bar..baz.@..
由此我们可以看到.altmacro
触发的扩展对@
和bar
之间的baz
做了一些不受欢迎的事情。不幸的是,我需要.altmacro
扩展一些包含.asciz
指令的更复杂的宏。
如何让宏不扩展某个参数?我不想删除.altmacro
。
答案 0 :(得分:0)
看起来正确的语法是:
thing \@