Microsoft Visual Studio で C/C++ コードのアセンブリを見ることはできますか? 特定のアセンブリ タイプ (MIPS アセンブリ) を確認することはできますか?
1 に答える
Microsoft Visual Studio で C/C++ コードのアセンブリを見ることはできますか?
はい、そうです。次の 3 つの基本的な方法があります。
コンパイル プロセス中に各翻訳単位のアセンブリ リストを生成するようにコンパイラに依頼します。
これは、生成されるリストのタイプをカスタマイズするために使用できるさまざまなオプションがある
/FA
スイッチを使用して行われます。ソリューション エクスプローラーでプロジェクトを右クリックし、プロジェクト設定を開くと、IDE でこれを構成できます。次に、C/C++ → 出力ファイル → アセンブリ出力の下にさまざまなオプションが一覧表示されます。
適切なプロジェクト設定に対してこのオプションを有効にしてください。つまり、「デバッグ」または「リリース」モード用です。どちらかまたは両方に設定できますが、最適化されていないデバッグ モードのアセンブリ コードを見るのは面白くない時間の無駄なので、「リリース」モードでのみ有効にすることをお勧めします。
現在デバッグ中のバイナリの実際のアセンブリ コードを表示します。
コンパイルされたアプリケーションをデバッガーで実行し、ブレークインします (定義されたブレークポイントに到達するか、ツールバーの [ブレーク] ボタンを任意に押すことにより、デバッガーを使用してプログラムにシングルステップ インすることもできます)。実行が中断されたら、エディターで右クリックし、[Go To Assembly] を選択します。キーボードを使用して、これはCtrl+ Alt+DまたはAlt+8です。
「逆アセンブル」ウィンドウをメインのコード タブの 1 つとしてドッキングしておくことで、常にそこに表示され、必要に応じて切り替えることができます。このウィンドウはデバッグ モードでのみ表示できますが、Visual Studio は、"デザイン" モードと "デバッグ" モードのウィンドウ レイアウトを別々に維持するため、これを適切にサポートします。
(静的ライブラリは実行可能ファイルにリンクされるまで実行できないため、これは機能しないことに注意してください。これらの場合は、アプローチ #1 を使用する必要があります。)
バイナリを静的に逆アセンブルします。
Visual Studio コマンド プロンプトを開き (環境変数が正しく設定されるように)、link.exe の
/disasm
オプションを使用します。例えば:link.exe /disasm /dump /linenumbers /out:MyApp.asm MyApp.exe
特定のアセンブリ タイプ (MIPS アセンブリ) を確認することはできますか?
いいえ。コンパイル時に実際にターゲットにしているプロセッサのアセンブリ コードのみが表示されます。Visual Studio の最新バージョンは、x86-32 (x86 または IA-32 とも呼ばれます)、x86-64 (x64 または AMD64 とも呼ばれます)、および ARM のみをサポートします。歴史的に、Alpha、PowerPC、そしておそらく MIPS 版のコンパイラもありました。これらのいずれかがあり、MIPS バイナリを生成できる場合は、必要なオプションがサポートされます。
MIPS コンパイラがなければ、明らかに MIPS アセンブリ コードを表示する方法はありません。x86 コンパイラは MIPS アセンブリを生成しません!