我反编译了一些ARM ELF文件并读取了汇编代码。但是,我不明白一些代码是如何转换成助记符的。例如,我得到了这样的代码:ARM汇编程序中的编码寄存器操作数是怎样的?
#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位。 – hivert