如何在gnu汇编程序中进行仲裁文本替换

时间:2017-02-11 10:56:37

标签: gcc assembly macros

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

是否有办法执行#define b a(%rip)之类的操作,以便b的每个实例都被a(%rip)替换,以便movl $0,a(%rip)缩写为{{1} }}?我已经尝试了movl $0,bb=a(%rip),但都没有奏效。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用C预处理器预处理文件,然后确实使用#define b a(%rip)。要使用C预处理器预处理文件,请使用文件后缀.S而不是.s,并按如下方式进行汇编:

cc -c file.S

请注意,像这样的定义非常不寻常并且让读者感到困惑。我建议您不要试图通过宏的方式更改令您困惑的汇编语法,而是要熟悉语法以及使用%rip - 相对寻址模式的原因。