74

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

4

3 回答 3

120

正如@thakis所指出的,较新版本的 Clang (3.5+) 接受该-masm=intel参数。


对于旧版本,这应该会发出带有 Intel 语法的汇编代码:

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

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

于 2012-08-14T17:44:17.360 回答
47

从 clang r208683(clang 3.5+)开始,它可以理解-masm=intel. 因此,如果您的 clang 足够新,您可以使用它。

于 2014-05-13T11:47:55.820 回答
17

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

于 2012-06-12T03:45:26.757 回答