I've been reversing an asm checksum code for the last days, and I've managed to understand how it completly works, except for one instruction; ldrh
The info I've been able to found says that it's basically a ldr instruction which loads a half word (2 bytes). But the problem is that the ldr() instruction has a lot of variants and there's no info about how this one would be wrote in pseudo C.
Specifically my instruction is:
ldrh r3,[r12,r3]
If it were a normal ldr, the pseudo code will be
r3 = r12[r3];
(r12 is an addres to a memory place so I don't understand what it really does..Does it loads the value at r12+r3 into r3?