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 ?