【问题标题】:intel x64 REX prefix英特尔 x64 REX 前缀
【发布时间】:2026-01-28 06:35:02
【问题描述】:

对于这两条指令:

12 /r 带进位 r/m8 加到字节寄存器中。

REX + 12 /r 带进位 r/m64 加到字节寄存器。

如果第一条指令上的寄存器是 9-16,那么这两个都可以有 REX 前缀……那么 CPU 是如何区分这两者的呢?第一条指令上的 REX 前缀是否缺少第 7 位中的 1,所以它只是 REX.B 0x01?

【问题讨论】:

    标签: 64-bit machine-code


    【解决方案1】:

    不,显然不是。第一个没有 REX 前缀,第二个有。第一种形式 按定义 没有 REX 前缀,因此不能有它(根据定义,这将再次使其成为第二种形式)。它们都在手册中的原因是,表格旁边可以有带有 REX 前缀的星号,并注意它不能编码 AH、BH、CH 或 DH。

    第一条指令的 REX 前缀是否缺少第 7 位的 1,所以它只是 REX.B 0x01?

    这毫无意义。

    那么 CPU 是如何区分这两者的呢?

    嗯,一个有 REX 前缀,另一个没有。

    【讨论】: