x64 LAR指令(加载访问权限字节)

时间:2015-05-05 06:27:08

标签: assembly x86 64-bit x86-64 machine-code

此指令有一些令人困惑的模式,这里是英特尔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前缀可能?我认为它需要一个前缀,因为操作码是相同的......

1 个答案:

答案 0 :(得分:1)

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.

还有:

  

在64位模式下,大多数指令默认为32位操作数大小。对于这些说明,请使用REX前缀   (第14页)可以指定64位操作数大小,66h前缀指定16位操作数大小。 REX   前缀优先于66h前缀。

来自 AMD64架构的引言 程序员手册 第3卷: 通用和 系统说明