x86_64 - 操作码映射.可能的错误?

Amy*_*sen 8 x86-64 opcode

我正在研究x86_64,vol2,B.2.1部分的intel操作码映射

我的pop指令有问题.

POP – Pop a Value from the Stack

wordregister
0101 0101 : 0100 000B : 1000 1111 : 11 000 reg16

qwordregister
0100 W00BS : 1000 1111 : 11 000 reg64

wordregister (alternate encoding)
0101 0101 : 0100 000B : 0101 1 reg16

qwordregister (alternate encoding)
0100 W00B : 0101 1 reg64

memory64
0100 W0XBS : 1000 1111 : mod 000 r/m

memory16
0101 0101 : 0100 00XB 1000 1111 : mod 000 r/m
Run Code Online (Sandbox Code Playgroud)

0101 0101显然与wordregisters一起使用的前缀在这里真的很烦我,因为我找不到任何用途.

即使在将命令提交给objcopy其他反汇编程序之后,我也从未看到它出现过.

0:  66 59                   pop    cx
2:  59                      pop    rcx
Run Code Online (Sandbox Code Playgroud)

我可以理解1000 1111 : 11 000 reg160100 000B : 0101 1 reg16部分.

那么,那0x55呢?

Rin*_*g Ø 3

如果您将 CPU 设置为 x86_64,反汇编程序将为您提供

55    push rbp
Run Code Online (Sandbox Code Playgroud)

点击55参考push也可以指向。

指令pop的第 3 位(第 4)为1push位于0,如 0x55 中。

文档中肯定存在错误,因为 CPU 指令编码逻辑和网络上可用的其他元素清楚地将 0x55 显示为推送操作。