为什么在英特尔MPX之前,'0F 1A/r`和'0F 1B/r`是NOP?

Rus*_*lan 5 x86 assembly intel

在不支持Intel MPX的处理器上,文档说所有MPX指令都是NOP.也就是说,因为我已经通过所有这些说明看,他们似乎都0F 1A /r0F 1B /r无前缀或前缀F3,F266字节为单位,根据指令.此外,还有以下声明BNDMK:

该指令的reg-reg形式保留了遗留行为(NOP).

我试图用PDF搜索这些操作码(即我的搜索字符串是0F 1),但我发现那里只有MPX指令的描述.展望从2014年2月指令集,我发现很多这种形式的指令,但是他们不是NOP指令,如F2 0F 12 /rMOVDDUP.并专门寻找0F 1A,0F 1B我没有找到任何东西.

寻找NOP我发现多字节NOP 0F 1F /0,但它与MPX指令形式不一致.

所以我的问题是,它是否记载,遗留下来的行为,其中0F 1A /r0F 1B /r是NOP?这种形式的指令是一般规则,还是它们代表NOP形式的非NOP指令(如90代表xchg eax,eax)?

Jes*_*ter 4

我手头上的英特尔 pdf 确实没有列出这些,操作码表 A-3 中的NOP块是空的两字节操作码映射:08H - 7FH(第一个字节是 0FH)。脚注表示所有操作码映射中的所有空白均已保留,不得使用。不依赖于未定义或保留位置的操作。0F 19-1E

\n\n

我还有 AMD pdf 24594--Rev。3.19——2012 年 9 月,并且确实将上述块列为NOP操作码表A-4 中的内容。辅助操作码映射(双字节操作码),低半字节 8\xc2\xad-Fh。然而,实际说明的页面NOP仅列出了0F 1F

\n

  • 所以我得出的结论是,这是一个没有记录的公共功能,在 MPX 之前一直由 Intel 和 AMD 实施,而 AMD 刚刚发布了它的文档。知道了谢谢! (2认同)