17
私はILDasmを介して私のアセンブリのILのいくつかをトロールしていましたが、私はのすべてが私の方法のすべてがnop
で始まることに気付きました。生成されたILコードがNopで始まるのはなぜですか?
それは誰でも知っていますか?
私はILDasmを介して私のアセンブリのILのいくつかをトロールしていましたが、私はのすべてが私の方法のすべてがnop
で始まることに気付きました。生成されたILコードがNopで始まるのはなぜですか?
それは誰でも知っていますか?
アセンブリがデバッグモードでコンパイルされました。 Nop
命令は何もしません(つまり副作用はありません)が、ブレークポイントを配置するための便利な命令として機能します。
ヒント
デバッグの目的で、追加のブレークポイントのための場所が必要な場合は、空の括弧のペアを追加することにより、デバッグビルドでNop
を含めることを強制することができ、例えば
_grid.PreviewMouseRightButtonDown += (sender, e) =>
{
_isRightMouseDown = true;
RowColumnIndex cell = _grid.PointToCellRowColumnIndex(e);
{} //<------ Adding a Nop allows a breakpoint here.
};
サイクルを浪費しますか? – YellPika
@YellPikaはいそうです。彼らは何もしないサイクルを無駄にする。それらは、デバッグビルドを遅くするものの1つです。 –
JITコンパイラは、それらをネイティブ命令フローから最適化する必要があります。 – devstuff