我正在研究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 reg16和0100 000B : 0101 1 reg16部分.
那么,那0x55呢?
如果您将 CPU 设置为 x86_64,反汇编程序将为您提供
55 push rbp
Run Code Online (Sandbox Code Playgroud)
点击55此参考push也可以指向。
指令pop的第 3 位(第 4位)为1,push位于0,如 0x55 中。
文档中肯定存在错误,因为 CPU 指令编码逻辑和网络上可用的其他元素清楚地将 0x55 显示为推送操作。
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |