.net - 为什么生成的 IL 代码以 Nop 开头?

标签 .net il nop

我正在浏览我的一个程序集的一些 IL(通过 ILDasm),我注意到我的所有方法都以 nop 开头。操作说明。

有谁知道这是为什么?

最佳答案

程序集是在 Debug模式下编译的。 Nop指令不做任何事情(即没有副作用),而是作为放置断点的方便指令。

提示

如果出于调试目的需要额外的断点位置,可以强制包含 Nop在调试版本中通过添加一对空大括号,例如

_grid.PreviewMouseRightButtonDown += (sender, e) =>
{
    _isRightMouseDown = true;

    RowColumnIndex cell = _grid.PointToCellRowColumnIndex(e);
    {} //<------ Adding a Nop allows a breakpoint here.
};

关于.net - 为什么生成的 IL 代码以 Nop 开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4590382/

相关文章:

c# - 在 .NET 中编译与版本无关的 DLL

.net - 寻找仅在用户选中 CheckBox 时触发的事件

c# - 只调用另一个方法的方法的编译器优化

execution-time - 处理器指令周期执行时间

.net - 在单独的程序集中具有资源字典的智能感知

c# - 为什么 !DumpHeap -stat 中的对象总和与 !EEHeap -gc 不匹配?

.net - 存在哪些 CLR/.NET 字节码工具?

c# - 如何在运行时将 IL 注入(inject)方法

assembly - Skylake 在一个周期内可以执行多少个 1 字节的 NOP

assembly - 为什么在 x86 程序集中将 NOP 分配给 0x90?