-1

重複の可能性:C#コードから
JIT出力生成アセンブリを取得しますか?

アセンブラーを学び始めました!

自分のc#コードのアセンブリコードを表示できるかどうか知りたいですか?

たとえば、私が持っている場合:

int i;

どうやって:

  1. アセンブリコードを参照してください?
  2. アセンブリコードでそれが何をするのかを正確に特定しますか?
4

2 に答える 2

2

デバッガーを使用して、ジッターによって生成されたマシンコードを確認します。デバッグとシングルステップを開始するか、ブレークポイントを設定します。エディタウィンドウを右クリックし、[分解に移動]を選択します。または、デバッグ+ウィンドウ+逆アセンブリを使用します。使用したい他のデバッグウィンドウはレジスタとメモリで、生のCPUレジスタとメモリビューを表示します。[レジスタ]ウィンドウを右クリックして、ビューにレジスタを追加します。

そこに表示されるアセンブリコードには、いくつかの癖があります。すべてのコードはアドレス0から始まりますが、実際のアドレスはジッターのために完全に予測できないため、表示されません。しかし、それもバグを引き起こし、CALL命令のターゲットアドレスが間違っています。また、最適化されたコードはユーザーのマシンで実際に実行されるため、通常は最適化されたコードを確認する必要があります。リリースビルドに切り替えて、[ツール] + [オプション]、[デバッグ]、[一般]を使用し、[モジュールの読み込み時にJIT最適化を抑制する]オプションのチェックを外します。

于 2012-10-15T23:00:35.807 に答える
1

アセンブラコードは通常JIT時にのみ記述されるため、特にそれについて学びたい場合は、VSデバッガを調べるのが最適です。

http://msdn.microsoft.com/en-us/library/a3cwf295.aspx

IL(中間言語)を意味する場合、これはアセンブリ言語ではありませんが、EXEまたはDLLに保存されます。それを見るための良いツールはILSpyです。

http://ilspy.net/

于 2012-10-15T21:45:24.310 に答える