如何在 gnu 汇编程序中进行任意文本替换


a:.int 0
movl $0,a(%rip)

有没有办法做类似#define b a(%rip)的事情,这样b的每个实例都将被a(%rip)替换,以便movl $0,a(%rip)可以缩写为movl $0,b?我已经尝试了b=a(%rip).macro b;a(%rip);.endm但都没有奏效。任何帮助将不胜感激。

您可以使用

C 预处理器预处理文件,然后确实使用 #define b a(%rip) .若要使用 C 预处理器预处理文件,请使用文件后缀 .S 而不是.s,并像这样组装:

cc -c file.S

请注意,这样的定义非常不寻常,让读者感到困惑。与其尝试更改宏使您感到困惑的汇编语法,我建议您熟悉语法以及使用%rip相对寻址模式的原因。

最新更新