在不支持 Intel MPX 的处理器上,文档显示所有 MPX 指令都是 NOP。也就是说,当我查看所有这些指令时,它们似乎都是 0F 1A /r
或 0F 1B /r
没有前缀或带有 F3
前缀code>、F2
或 66
字节,具体取决于指令。此外,还有类似 BNDMK
的语句:
The reg-reg form of this instruction retains legacy behavior (NOP).
我尝试在 PDF 中搜索这些操作码(即我的搜索字符串是 0F 1
),但我发现只有 MPX 指令的描述。查看 2014 年 2 月的指令集引用,我发现了很多这种形式的指令,但它们不是 NOP,例如F2 0F 12 /r
是 MOVDDUP
。专门寻找 0F 1A
和 0F 1B
我在那里找不到任何东西。
在查找 NOP 时,我发现了多字节 NOP 0F 1F /0
,但它与 MPX 指令形式不一致。
所以我的问题是,0F 1A /r
和 0F 1B /r
的遗留行为是 NOP 的记录在哪里?这是这种形式的指令的一般规则,或者它们可能代表 NOP 形式的某些非 NOP 指令(例如 90
代表 xchg eax,eax
)? p>
最佳答案
我手边的英特尔 pdf 文件确实也没有将它们列为 NOP
,操作码表中的 block 0F 19-1E
为空A -3。两字节操作码映射:08H - 7FH(第一个字节为0FH)。脚注说所有操作码映射中的所有空白都被保留,不得使用。不要依赖于未定义或保留位置的操作。
我还有 AMD pdf 24594--Rev。 3.19 - 2012 年 9 月,并且确实将上述 block 在操作码表 A-4 中列为 NOP
。辅助操作码映射(双字节操作码),低半字节 8-Fh。然而,实际NOP
指令的页面仅列出0F 1F
。
关于assembly - 为什么 `0F 1A/r` 和 `0F 1B/r` 在 Intel MPX 之前就已经是 NOP 了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530871/