immediate 值
immediate 部分为指令提供一个 immediate operand。
immediate 寻址分为两种:需要 ModRM 字节引导和直接嵌在 opcode 中。
但是: ModRM 字节本身是不提供 immediate 寻址的,这个 ModRM 字节除了提供 register 和 memory 寻址外,只是起了对 Opcode 进行补充的作用,即:这个 Opcode 是一个 Group Opcode 而 immediate 实际上还是嵌在 Opcode 中。 |
1、使用 immediate 的方式
上面已经说了,提供 immediate 的方式为:
(1)operand 寻址在 opcode 中嵌入,即:encode 中直接提供 immediate 值
这一类指令很多,也很常用,如:call/jmp,mov/push 等等..
例:指令 mov al, 1
它的 encode 是:b0 01 这种就是典型的指令,operand 寻址方式是嵌在 opcode 中的。
(2)operand 寻址需要 ModRM 引导
基于这种寻址方式,可肯定这个 opcode 是 Group 属性的 opcode
★ ModRM.reg 对 opcode 进行补充确定,而 ModRM.r/m 是提供 register 或者 memory 寻址。
例: 指令 mov dwor