【发布时间】:2013-07-24 17:48:11
【问题描述】:
我反编译了一些 ARM ELF 文件并阅读了汇编代码。但是,我看不到一些代码是如何翻译成助记符的。例如我得到这样的代码:
#hex code | #mnemonic | #binary
0xb480 | push {r7} | 1011 0100 1000 0000
0xb580 | push {r7, lr} | 1011 0101 1000 0000
0xb5f0 | push {r4,r5,r6,r7,lr} | 1011 0101 1111 0000
因此,您可以清楚地看到push 的操作码是0xb4 或0xb5,如果推送多个值。但是寄存器列表是如何创建的呢?
第一个例子很清楚,r7是由第8位编码的,也就是设置。但是,为什么第二个操作码也会推送lr?没有位标志吗?
【问题讨论】:
-
您确定操作码是两个完整字节吗?它可能只有 6 / 7 位。