1. ホーム
  2. c++

[解決済み] C++のプログラムのアセンブリコードを見るにはどうしたらいいですか?

2022-05-07 22:09:43

質問

C++のプログラムのアセンブリコードを見るにはどうしたらいいですか?

そのための一般的なツールは何ですか?

どのように解決するのですか?

コンパイラに聞く

プログラムを自分で構築する場合、コンパイラにアセンブリソースを出力するよう依頼することができます。ほとんどの UNIX コンパイラでは -S のスイッチを入れてください。

  • GNUアセンブラを使用している場合、コンパイル時に -g -Wa,-alh は、ソースとアセンブリが混在した状態で標準出力に出力されます ( -Wa は、アセンブラにオプションを渡すようコンパイラドライバに要求します。 -al はアセンブリの一覧を表示するようにし -ah が追加され、高レベルのソースが表示されます。)

    g++ -g -c -Wa,-alh foo.cc

  • Visual Studioの場合は /FAsc .

バイナリを覗く

コンパイル済みのバイナリがある場合。

  • 使用 objdump -d a.out UNIXの場合(cygwinでも動作します)。
  • dumpbin /DISASM foo.exe をWindowsで表示します。

デバッガを使用する

デバッガはディスアセンブルを表示することもできる。

  • 使用する disas コマンドをGDBで実行します。

    使用方法 set disassembly-flavor intel インテル構文がお好みなら
  • または ディスアセンブルウィンドウ WindowsのVisual Studioの