编码多字节不操作说明(x86/x64)



此指令在英特尔X64参考手册的第1018页上。这是它的样子:

Opcode    Instruction Description
90        NOP         One byte no-operation instruction.
0F 1F /0  NOP r/m16   Multi-byte no-operation instruction.
0F 1F /0  NOP r/m32   Multi-byte no-operation instruction.

我在某个地方读到最大无长度为9个字节。NO-OP长度是16/32位寄存器还是内存地址,还是我自己用一堆零进行编码,如果是这样,R/M16或R/M32如何应用?

来自Xed:

xed64 -64 -e NOP MEM4:EAX,EAX,1,00000000
OPERAND ORDER: MEM0 
Encodable! 670F18A40000000000
.byte 0x67,0x0f,0x18,0xa4,0x00,0x00,0x00,0x00,0x00

使用9个字节NOP的优点是减少解码器的应变,该解码器每周循环只能解码4个指令。从技术上讲,NOP是一种指导。

最新更新