assembly - 为什么 `0F 1A/r` 和 `0F 1B/r` 在 Intel MPX 之前就已经是 NOP 了?

标签 assembly x86 intel

在不支持 Intel MPX 的处理器上,文档显示所有 MPX 指令都是 NOP。也就是说,当我查看所有这些指令时,它们似乎都是 0F 1A /r0F 1B /r 没有前缀或带有 F3 前缀code>、F266 字节,具体取决于指令。此外,还有类似 BNDMK 的语句:

The reg-reg form of this instruction retains legacy behavior (NOP).

我尝试在 PDF 中搜索这些操作码(即我的搜索字符串是 0F 1),但我发现只有 MPX 指令的描述。查看 2014 年 2 月的指令集引用,我发现了很多这种形式的指令,但它们不是 NOP,例如F2 0F 12 /rMOVDDUP。专门寻找 0F 1A0F 1B 我在那里找不到任何东西。

在查找 NOP 时,我发现了多字节 NOP 0F 1F /0,但它与 MPX 指令形式不一致。

所以我的问题是,0F 1A /r0F 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/

相关文章:

assembly - x86 MASM 程序集 - 保存字符串的空变量

assembly - ARM:2 个 printfs 导致段错误

c++ - 堆栈上的线程返回地址是什么?

assembly - [邓特曼的书第 3 版]。 16 位 8086 怎么能寻址 16 倍于 8080 的内存?

linux - 是否有在 NASM 中生成文本文本文件作为输出的程序示例?

c - while循环不写入显存

有人可以将此程序集转换为 C 语言吗

python - 如何在列表中保存英特尔实感图像(pyrealsense2)

x86 - 在英特尔酷睿 i3/i7 的情况下,从缓存集驱逐后数据的去向

c - 如何使用 SIMD 计算字符出现次数