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

时间:2015-12-17 12:00:48

标签: x86-64 opcode

我正在处理x86_64的intel操作码映射, vol2,B.2.1节

我的run(...) { myAuthStuff = create() jersey.register(MyAuthRequstFilter(myAuthStuff)); jersey.register(MyAuthInjectionBinder(myAuthStuff)); } 指令存在问题。

pop

显然与wordregisters一起使用的前缀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 在这里真的很烦我,因为我找不到任何用途。

即使在向0101 0101或其他反汇编程序提交命令后,我也从未看到它出现过。

objcopy

我可以理解0: 66 59 pop cx 2: 59 pop rcx 1000 1111 : 11 000 reg16部分。

那么,0100 000B : 0101 1 reg16呢?

1 个答案:

答案 0 :(得分:3)

如果您将CPU设置为x86_64,则disassembler会为您提供

55    push rbp

点击此reference中的55也指向push

pop指令的第3位(4 th )到1push0得到它,就像在0x55中一样

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