我正在处理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
呢?
答案 0 :(得分:3)
如果您将CPU设置为x86_64,则disassembler会为您提供
55 push rbp
点击此reference中的55
也指向push
。
pop
指令的第3位(4 th )到1
,push
在0
得到它,就像在0x55中一样
文档中肯定存在错误,因为网络上的CPU指令编码逻辑和其他元素清楚地将0x55显示为推送操作。