为什么ModR/M:rm字段在mov al, byte ptr [rbx + rsi*2 + 0x100]中是100?
Why the ModR/M:rm field is 100 in mov al, byte ptr [rbx + rsi*2 + 0x100]?
说明
mov al, byte ptr [rbx + rsi*2 + 0x100]
编码为
8a 84 73 00 01 00 00
表示ModR/M
是0x84
或10.000.100
我理解 mod
(10
) 和 reg
(000
) 字段,但不知道为什么 rm
是 100
。谁能解释一下这里使用的规则?
rm 字段为 100,表示 SIB(比例索引基数)操作数。该操作数在 SIB 字节中详细说明,如果存在,则紧跟在 modr/m 字节之后。在这种情况下,SIB 字节是 0x73
或 01.110.011,表示 scale (01) 为 2,rsi (110) 为变址寄存器,rbx (011) 为基址寄存器。
详情请参阅英特尔手册。
说明
mov al, byte ptr [rbx + rsi*2 + 0x100]
编码为
8a 84 73 00 01 00 00
表示ModR/M
是0x84
或10.000.100
我理解 mod
(10
) 和 reg
(000
) 字段,但不知道为什么 rm
是 100
。谁能解释一下这里使用的规则?
rm 字段为 100,表示 SIB(比例索引基数)操作数。该操作数在 SIB 字节中详细说明,如果存在,则紧跟在 modr/m 字节之后。在这种情况下,SIB 字节是 0x73
或 01.110.011,表示 scale (01) 为 2,rsi (110) 为变址寄存器,rbx (011) 为基址寄存器。
详情请参阅英特尔手册。