Opcodes:hexadecimal 组装说明

Opcodes:hexadecimal assembly instructions

http://ref.x86asm.net/coder64.html#xF0 的页面给出了各种十六进制操作码。

在我的Visual studio分解中,我有

FF E0 jmp rax

我刚刚发现粘贴 'jmp rax' 并在 https://defuse.ca/online-x86-assembler.htm#disassembly 中进行汇编给出了相应的十六进制操作码(在本例中为 FF E0)。

但是是否有任何手册或文档显示我们如何找出跳转指令的十六进制等价物。(例如,我想找出 jmp rbx 的等价物) 谢谢

是的,英特尔 SDM 第 2 卷包含有关编码指令的完整信息。

Felix Cloutier’s site 包含 web-friendly 格式的相同信息。

该站点的

This page 涵盖了 jmp 指令。它表明 jmp rm32 被编码为 ff /4。 /4 表示 rmmod 字节的三位(位 5:3),用作指令的扩展。其他位对源进行编码。 Bits 7:6 为 11 表示一个寄存器。位 2:0 标识哪个寄存器。在 ff e0 中,位 2:0 是 000,表示 rax。要使用 rbx,位 2:0 将是 011,给出 ff e3.