我反编译了一些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
?难道没有相应的标志位吗?