用于intel x64 arch的Rex前缀解码

mat*_*thk 2 assembly x86-64 intel machine-code opcode

在英特尔文档"架构软件开发人员手册Vol 2A"中,表2-4显示了REX前缀位的重要性.

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

DCo*_*der 5

CS.D表示与当前代码段关联的段描述符的"默认操作大小"字段.它控制地址和操作数的默认大小,并可以设置为默认值为16或32位操作数大小.

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

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


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

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