我最近注意到英特尔x86汇编中的NOP
指令实际上与XCHG EAX, EAX
相同
这不会通过更改状态寄存器带来意想不到的结果吗?
例如,如果EAX
最初为零,则FLAG
寄存器的第六位(零位)将在NOP
后设置。
那么在我的代码中使用NOP
如何安全呢?
随机的
x86 引用通过声明XCHG
指令轻松解释了这一点:
受影响的标志
没有
NOP(或XCHG,或MOV)不会更改x86架构中的FLAGS寄存器。使用NOP始终是安全的。(它怎么会有所不同?