【问题标题】:What's the point of instructions with only the REX prefix in 64bit mode?在 64 位模式下只有 REX 前缀的指令有什么意义?
【发布时间】:2015-02-24 08:27:19
【问题描述】:

例如,其中一个 MOV 有 2 个版本,一个带有 REX,一个没有(来自 Intel 的文档):

88 /r MOV r/m8, r8
REX + 88 /r MOV r/m8***, r8***

***In 64-bit mode, r/m8 can not be encoded to access the following byte registers if a REX prefix is used: AH, BH, CH, DH.

据我了解,这两条指令是相同的,只是第二条使用了一个额外的字节并提供了更少的选项......所以基本上它是没用的。

我错过了什么?

【问题讨论】:

标签: assembly x86-64 cpu-registers instruction-set


【解决方案1】:

这与指令中寄存器的编码有关。 r/m 部分中可用的位从一组寄存器中选择 - 这些寄存器会根据 REX 前缀而变化:

可用的不带 REX 前缀的 8 位寄存器:

AL、CL、DL、BL、AH、CH、DH、BH

设置了 REX 前缀的可用 8 位寄存器:

AL、CL、DL、BL、SPL、BPL、SIL、DIL、R8B、R9B、R10B、R11B、R12B、R13B、R14B、R15B

这就是英特尔文档提请注意您无法选择具有 REX 前缀集的某些寄存器这一事实的原因。

【讨论】:

【解决方案2】:

它不是没用,但也不是非常有用。

REX 前缀将ahch,dhbh 更改为splbplsildil(分别)。因此,虽然您不能使用第一组,但可以使用第二组。

【讨论】:

  • 我选择了另一个作为答案,因为还有更多信息,但还是谢谢你
猜你喜欢
  • 2020-03-28
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 2018-06-14
  • 2012-06-12
  • 1970-01-01
相关资源
最近更新 更多