x64 LAR 指令(加载访问权限字节)
x64 LAR instruction (Load Access Rights Byte)
这条指令有一些令人困惑的模式,这里是table英特尔x64手册第862页的64位版本:
Opcode Instruction Description
0F 02 /r LAR r16, r16/m16 r16 ← access rights referenced by r16/m16
0F 02 /r LAR reg, r32/m16 reg ← access rights referenced by r32/m16
那个'reg'是多大的寄存器?这是一条需要 16 位 66H 前缀的指令吗?或者可能是 67H 或 REX.W 前缀?我认为它需要一个前缀,因为操作码是相同的...
AMD 文档对此更清楚一些:
LAR reg16, reg/mem16 0F 02 /r ...
LAR reg32, reg/mem16 0F 02 /r ...
LAR reg64, reg/mem16 0F 02 /r ...
reg/mem16 : Word (16-bit) operand in a GPR register or memory.
还有:
In 64-bit mode, most instructions default to a 32-bit operand size. For these instructions, a REX prefix
(page 14) can specify a 64-bit operand size, and a 66h prefix specifies a 16-bit operand size. The REX
prefix takes precedence over the 66h prefix.
引自AMD64架构
程序员手册
第 3 卷:
通用和
系统说明
这条指令有一些令人困惑的模式,这里是table英特尔x64手册第862页的64位版本:
Opcode Instruction Description
0F 02 /r LAR r16, r16/m16 r16 ← access rights referenced by r16/m16
0F 02 /r LAR reg, r32/m16 reg ← access rights referenced by r32/m16
那个'reg'是多大的寄存器?这是一条需要 16 位 66H 前缀的指令吗?或者可能是 67H 或 REX.W 前缀?我认为它需要一个前缀,因为操作码是相同的...
AMD 文档对此更清楚一些:
LAR reg16, reg/mem16 0F 02 /r ... LAR reg32, reg/mem16 0F 02 /r ... LAR reg64, reg/mem16 0F 02 /r ...
reg/mem16 : Word (16-bit) operand in a GPR register or memory.
还有:
In 64-bit mode, most instructions default to a 32-bit operand size. For these instructions, a REX prefix (page 14) can specify a 64-bit operand size, and a 66h prefix specifies a 16-bit operand size. The REX prefix takes precedence over the 66h prefix.
引自AMD64架构 程序员手册 第 3 卷: 通用和 系统说明