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

时间:2012-06-12 02:56:43

标签: c++ assembly x86 clang intel

正如this question所示,使用g ++,我可以g++ -S -masm=intel test.cpp。 另外,对于clang,我可以clang++ -S test.cpp,但clang(-masm=intel)不支持warning argument unused during compilation: -masm=intel。如何使用clang获取intel语法?

3 个答案:

答案 0 :(得分:101)

作为noted below by @thakis,较新版本的Clang(3.5+)接受-masm=intel参数。


对于旧版本,应该使用英特尔语法发出汇编代码:

clang++ -S -mllvm --x86-asm-syntax=intel test.cpp

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

答案 1 :(得分:34)

从clang r208683(铿锵3.5+)开始,它理解-masm=intel。所以,如果你的铿锵声足够新,你可以使用它。

答案 2 :(得分:16)

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