msumimz's diary

RubyにJITコンパイラを実装する個人プロジェクトの情報発信ブログです。

clangのアセンブリをIntel形式で出力する

clangで-Sオプションをつけてアセンブリを出力する場合、既定でAT&T形式になります。これをIntel形式にするには以下のオプションを使えばよいようです。

clang -S -o - -mllvm -x86-asm-syntax=intel test.c

'-mllvm'というのは、clangのインフラであるLLVMライブラリでサポートされているオプションを適用するための記法です。clangにはx86アセンブラ構文を指定するオプションはありませんが、LLVMにはあるので、この記法で指定するわけです。ライブラリであるはずのLLVMコマンドラインオプションが定義されているのはよくわかりませんが、そういうものなので仕方ありません。

ちなみに、このオプションをつけてもディレクティブはgas形式のままなので、MASM/NASMでは使えません。