传递字符串" @"作为GNU作为宏的参数?

时间:2016-10-23 22:06:56

标签: macros gas

所以我有这个.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

1 个答案:

答案 0 :(得分:0)

看起来正确的语法是:

thing \@