C++ プログラムのアセンブリ コードを表示するにはどうすればよいでしょうか?
これを行うための一般的なツールは何ですか?
ベストアンサー1
コンパイラに問い合わせる
自分でプログラムをビルドする場合は、コンパイラにアセンブリ ソースを出力するように要求できます。ほとんどの UNIX コンパイラでは、-S
スイッチを使用します。
GNU アセンブラを使用している場合、 でコンパイルすると、
-g -Wa,-alh
標準出力にソースとアセンブリが混在して出力されます (-Wa
コンパイラ ドライバにアセンブラにオプションを渡すように要求し、-al
アセンブリ リストをオンにして、-ah
「高レベル ソース」リストを追加します)。g++ -g -c -Wa,-alh foo.cc
Visual Studioの場合は、
/FAsc
。
バイナリを覗いてみる
コンパイルされたバイナリがある場合、
- UNIXでの使用
objdump -d a.out
(cygwinでも動作) dumpbin /DISASM foo.exe
Windows の場合。
デバッガーを使用する
デバッガーは逆アセンブリも表示できます。
disas
GDB でコマンドを使用します。Intel構文を好む場合に
使用します。set disassembly-flavor intel
- または分解ウィンドウWindows 上の Visual Studio の。