是否可以将不同arch的(GNU)汇编程序代码放入一个源文件中?

时间:2018-04-04 20:00:10

标签: assembly gas

我有一小段汇编程序,我希望将所有支持的体系结构保存在一个文件中。一种方法是在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汇编程序中以#开头的,而它们是从@开始的 - 所以如何处理常用注释?也许还有更多的陷阱?

有没有好办法呢?

1 个答案:

答案 0 :(得分:2)

如果使用gcc,并且汇编源文件的后缀为.S,则gcc会将C预处理器应用于汇编文件,然后再将其发送给汇编器。因此#可以用于预处理器指令,因为预处理器首先看到它。预处理器还会删除C样式的注释(/* *///),因此无论您使用的是哪种汇编器,都可以使用它们。