用于intel x64 arch的Rex前缀解码

时间:2012-08-15 14:05:22

标签: assembly x86-64 intel opcode machine-code

在英特尔文档"Architectures Software Developer’s Manual Vol 2A"中,表2-4显示了REX前缀位的重要性。

有人可以向我解释当W = 0时如何解释?它说0 = Operand size determined by CS.D但我不明白CS.D的含义。

1 个答案:

答案 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字段的影响。