为什么 `0F 1A /r` 和 `0F 1B /r` 在 Intel MPX 之前是 NOP?
How come `0F 1A /r` and `0F 1B /r` have been NOP before Intel MPX?
在不支持 Intel MPX 的处理器上,文档指出所有 MPX 指令都是 NOP。即,当我查看所有这些说明时,它们似乎都是 0F 1A /r
或 0F 1B /r
无前缀或前缀为 F3
、F2
或 66
字节, 取决于指令。此外,还有像 for 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
)?
我身边的英特尔 pdf 确实也没有将它们列为 NOP
,块 0F 19-1E
在操作码 table A- 中是空的3.两字节操作码映射:08H -- 7FH(第一个字节是 0FH)。脚注说 所有操作码映射中的所有空白都是保留的,不得使用。不要依赖未定义或保留位置的操作。
我还有 AMD pdf 24594--修订版。 3.19--2012 年 9 月,并且确实在操作码 table A-4 中将上述块列为 NOP
。辅助操作码映射(双字节操作码),低半字节 8-Fh。但是,实际 NOP
指令的页面仅列出 0F 1F
.
在不支持 Intel MPX 的处理器上,文档指出所有 MPX 指令都是 NOP。即,当我查看所有这些说明时,它们似乎都是 0F 1A /r
或 0F 1B /r
无前缀或前缀为 F3
、F2
或 66
字节, 取决于指令。此外,还有像 for 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
)?
我身边的英特尔 pdf 确实也没有将它们列为 NOP
,块 0F 19-1E
在操作码 table A- 中是空的3.两字节操作码映射:08H -- 7FH(第一个字节是 0FH)。脚注说 所有操作码映射中的所有空白都是保留的,不得使用。不要依赖未定义或保留位置的操作。
我还有 AMD pdf 24594--修订版。 3.19--2012 年 9 月,并且确实在操作码 table A-4 中将上述块列为 NOP
。辅助操作码映射(双字节操作码),低半字节 8-Fh。但是,实际 NOP
指令的页面仅列出 0F 1F
.