如何对近、绝对间接调用指令进行编码?
call r/m32
它的操作码是 FF /2,我知道 /2 是什么意思,但是,它如何影响二进制形式的编码?这是否意味着我们将 ModR/M 字节中的第二位设置为 1?谁能给我一个关于如何编码近间接调用的完整示例?
call [0x12345678]
因此,
FF 15 78 56 34 12
/2
表示 modR/m
Byte 仅使用 mod
和 r/m
字段。该指令只有一个操作数。它是一个 32 位位移值。因此,mod = 00
和 r/m = 101
(仅位移模式)
并且 modR/m
字节的 reg 字段等于符号 /2
中的 2 的二进制形式(reg = 010
)。
模组 | 注册 | R/M | |
---|---|---|---|
00 | 010 | 101 | = 15H |