在.S汇编代码中,我想编写一个宏,它将另一个宏作为“参数”,然后将其应用于多个寄存器。最简单的示例如下:
.macro add_macro reg1 reg2
add reg1 reg2
.endm
.macro apply_macro func reg1 reg2
func reg1
.endm
test_rax:
apply_macro add_macro %rax, %rdi
但是,当我想编译这个宏时,它不起作用:
gcc test.S -c -o test.o
test.S: Assembler messages:
test.S:10: Error: no such instruction: `func reg1'
有没有办法定义一个宏,将另一个宏应用到某些寄存器?注意,对于手头的用例,我必须使用宏,而不能使用函数。
1条答案
按热度按时间kgqe7b3p1#
当我想编译这个宏时,它不起作用:
test.S:10: Error: no such instruction:
func reg1'这是因为
apply_macro`的主体没有进行任何参数替换。下面是宏的编辑变体: