I decompiled some ARM ELF Files and read the assembler code. But, I don't see how some codes are translated to the mnemonics. For example I get a code like this:
#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
So, you can clearly see the opcode for push
is 0xb4
or 0xb5
if pushing multiple values. But how is then the list of registers created ?
The first example is very clear, r7
is coded by the 8th bit, which is set. But, why does the second opcode also pushes lr
? Is there no bit flag for that ?