【发布时间】:2010-09-19 02:13:48
【问题描述】:
我正在浏览 MSIL,并注意到 MSIL 中有很多 nop 指令。
MSDN 文章说,如果操作码被修补,它们不会执行任何操作并用于填充空间。与发布版本相比,它们在调试版本中的使用要多得多。
我知道汇编语言中会使用这类语句来对齐后面的指令,但是为什么 MSIL 中需要 MSIL nop?
(编者注:接受的答案是关于机器代码 NOP,而不是问题最初询问的 MSIL/CIL NOP。)
【问题讨论】:
-
在语言编译器向程序集发出的 MSIL nop 指令与运行程序集时 JIT 编译器发出的 x86 nop 指令(在该平台上)之间存在大量混淆。 [事实上,公认的答案是关于 x86 nop,与 MSIL 无关。] 理想情况下,这个问题应该分成 2 个不同的问题: MSIL::nop 的目的?原生平台 nop 的用途和用途?