在英特尔文档"Architectures Software Developer’s Manual Vol 2A"中,表2-4显示了REX前缀位的重要性。
有人可以向我解释当W = 0时如何解释?它说0 = Operand size determined by CS.D
但我不明白CS.D
的含义。
答案 0 :(得分:5)
CS.D
代表与当前代码段关联的段描述符的“默认操作大小”字段。它控制地址和操作数的默认大小,可以设置为默认为16或32位操作数大小。
在64位又名长模式(CS.L = 1)中,CS.D的唯一有效设置= 32位,所以清除W位的REX前缀使默认操作数大小为32 -bit。(操作数大小前缀可以将操作数大小覆盖到16)。
长模式下的默认地址大小为64位(指令上的地址大小前缀会将其覆盖为32)。
分段描述符在 Volume 3A - System Programming Guide,Part 1 ,chapter 3.4.5 Segment Descriptors 中有详细描述。
{em>第1卷 - 基础架构,第 3.6章操作数大小和地址大小属性中也讨论了D
字段的影响。