如何使用Intel语法中的clang生成汇编代码?

Jes*_*ood 58 c++ x86 assembly intel clang

正如这个问题所示,使用g ++,我能做到g++ -S -masm=intel test.cpp.另外,对于clang,我可以这样做clang++ -S test.cpp,但-masm=intelclang(warning argument unused during compilation: -masm=intel)不支持.如何使用clang获取intel语法?

dco*_*les 102

应该通过Intel语法发出汇编代码:

clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
Run Code Online (Sandbox Code Playgroud)

您可以使用-masm=intel从clang命令行传入llvm选项.遗憾的是,这个选项似乎没有很好地记录,因此我只是通过浏览llvm邮件列表找到它.


正如@thakis所述,在较新版本的Clang(3.5+)中不再需要它,因为它现在支持-mllvm <arg>语法.

  • http://llvm.org/bugs/show_bug.cgi?id=17465请求支持-masm = intel及更高版本. (3认同)

tha*_*kis 35

截至铿锵r208683(铿锵3.5+),它理解-masm=intel.所以,如果你的铿锵声足够新,你就可以使用它.


Jer*_*fin 16

假设您可以让Clang发出正常的LLVM字节代码,那么您可以使用llc编译为汇编语言,并使用其--x86-asm-syntax=intel选项以英特尔语法获得结果.