3

在英特尔文档“Architectures Software Developer's Manual Vol 2A”中,表 2-4 显示了 REX 前缀位的意义。

有人可以向我解释当 W=0 时如何解释吗?它说0 = Operand size determined by CS.D,但我不明白什么CS.D意思。

4

1 回答 1

5

CS.D代表与当前代码段相关的段描述符的“默认操作大小”字段。这控制地址和操作数的默认大小,并且可以设置为默认为 16 或 32 位操作数大小。

在 64 位又名长模式 (CS.L=1) 中,CS.D 的唯一有效设置 = 32 位,因此清除了 W 位的 REX 前缀将默认操作数大小保留为 32 位。 (操作数大小前缀可以覆盖操作数大小到 16)。

长模式下的默认地址大小为 64 位(指令上的地址大小前缀将其覆盖为 32)。


段描述符在第 3A 卷 - 系统编程指南,第 1 部分,第3.4.5章段描述符中有详细描述

第 1 卷 - 基本架构的第3.6章操作数大小和地址大小属性D也讨论了该字段的影响。

于 2012-08-15T17:47:45.597 回答