首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CIL nop操作码的用途是什么?

CIL nop操作码的用途是什么?
EN

Stack Overflow用户
提问于 2008-10-24 19:14:03
回答 14查看 48.6K关注 0票数 82

我正在浏览MSIL,并注意到在MSIL中有很多nop指令。

MSDN的文章说,如果操作码打了补丁,它们不会采取任何行动,只是用来填充空间。与发布版本相比,它们在调试版本中的使用要多得多。

我知道这些类型的语句在汇编语言中用来对齐后面的指令,但是为什么MSIL中需要MSIL nops呢?

(编者按:公认的答案是关于机器代码NOPs,而不是问题最初询问的MSIL/CIL NOPs。)

EN

回答 14

Stack Overflow用户

发布于 2008-10-24 19:16:40

它为代码中的基于行的标记(例如断点)提供了机会,而发布版本不会发出任何标记。

票数 9
EN

Stack Overflow用户

发布于 2008-10-24 19:19:03

伙计!No-op太棒了!这是一条除了耗费时间什么也不做的指令。在黑暗的年代,你可以用它来对关键循环中的时序进行微调,或者更重要的是,作为自修改代码的填充物。

票数 6
EN

Stack Overflow用户

发布于 2009-05-28 13:03:36

在我最近工作的一个处理器中(工作了四年),NOP被用来确保在下一个操作开始之前完成前一个操作。例如:

将值加载到寄存器(需要8个周期) nop 8将1加到寄存器

这确保了寄存器在加法操作之前具有正确的值。

另一个用途是填充执行单元,例如中断向量,它必须是一定大小(32字节),因为vector0的地址是,比方说0,向量1 0x20等等,所以编译器在需要时将NOP放在其中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/234906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档