1. ホーム
  2. assembly

[解決済み] gcc を使ってインテル構文のアセンブリコードを生成する方法は?

2022-04-24 19:51:02

質問

gcc -S オプションは AT&T 構文でアセンブリコードを生成しますが、Intel 構文でファイルを生成する方法はありますか? または、この2つの間で変換する方法はありますか?

解決方法を教えてください。

使用方法 -masm=intel

gcc -S -masm=intel -Og -fverbose-asm test.c

GCC、clang3.5以降で動作します。 GCCマニュアル :

  • -masm=dialect

    選択された方言を使ってasm命令を出力する。 サポートされている選択肢 は intel または att (デフォルト) です。 Darwinはintelをサポートしていません。

Mac OSX の場合、デフォルトでは gcc コマンドは実際に clang を実行します。 最近の clang は -masm=intel を同義語として使用することができますが これは常に clang で動作します。 :

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

なお clang 14 まで これは ない は、clang がインラインを処理する方法を変更します。 asm() ステートメントを使用します。 GCC用とは異なり .

Matt Godbolt氏のCompiler Explorerサイトでは、これらのオプションがデフォルトで使用されています。 https://godbolt.org/

こちらもご覧ください GCC/clangのアセンブリ出力から"noise"を除去する方法は? には、他のオプションや、見ていて面白いasmの出力を得るためのヒントがあります。