我有一小段汇编程序,我希望将所有支持的体系结构保存在一个文件中。一种方法是在C文件中使用内联汇编,但由于没有真正的C代码,我宁愿使用(预处理的)汇编程序文件。像:
.file "zsvjmp.S"
# Here comes the description what this code is supposed to do
.globl zsvjmp_
.text
zsvjmp_:
#if defined (__i386__)
# here comes the i386 specific assembler code
#elif defined (__arm__)
@ here comes the arm specific assembler code
#endif
但我不确定这是否正常;例如,注释是在i386汇编程序中以#
开头的,而它们是从@
开始的 - 所以如何处理常用注释?也许还有更多的陷阱?
有没有好办法呢?
答案 0 :(得分:2)
如果使用gcc,并且汇编源文件的后缀为.S
,则gcc会将C预处理器应用于汇编文件,然后再将其发送给汇编器。因此#
可以用于预处理器指令,因为预处理器首先看到它。预处理器还会删除C样式的注释(/* */
和//
),因此无论您使用的是哪种汇编器,都可以使用它们。