web-dev-qa-db-ja.com

Intel構文のclangでアセンブリコードを生成する方法

この質問 が示すように、g ++では、g++ -S -masm=intel test.cpp。また、clangを使用すると、clang++ -S test.cpp、ただし-masm=intelはclang(warning argument unused during compilation: -masm=intel)。 clangでIntel構文を取得するにはどうすればよいですか?

56
Jesse Good

以下@thakisで表記 のように、Clangの新しいバージョン(3.5+)は-masm=intel引数を受け入れます。


古いバージョンの場合、これによりclangがIntel構文のアセンブリコードを出力するようになります。

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

-mllvm <arg>を使用して、clangコマンドラインからllvmオプションを渡すことができます。残念ながら、このオプションは十分に文書化されていないようです。したがって、llvmメーリングリストを参照することでしか見つけられませんでした。

101
dcoles

Clang r20868 (clang 3.5+)以降、-masm=intel。したがって、clangが十分に新しい場合は、それを使用できます。

34
thakis

Clangが通常のLLVMバイトコードを出力できると仮定すると、 llc を使用してアセンブリ言語にコンパイルし、その--x86-asm-syntax=intelオプションは、Intel構文で結果を取得します。

16
Jerry Coffin