Fri Dec 6 12:58:42 EST 2013
set $pc = 0 on ARM7TMDI
About the ARM pipeline. This is a bit confusing. It's interesting
how this confusion has lasted so long..
Up to this point I seem to recall always reading asm code such that
the current $pc -- annotated by '=>' in asm dump (e.g. x/10i) --
points to the current instruction. However, the instruction that's
executing is actually 3 instructions back.
Now the funny thing is that r1 after this:
mov r1, pc
is 20 (0x14) bytes past the address of the instruction. How is that?
The reason might be that qemu is not emulating the ARM7TDMI but is
using -cpu arm926 by default. It seems that pc-relative addressing is
standardized across designs with different pipeline depths, but
register moves are not?
20 bytes is 5 instructions. Is this the 5-stage pipeline? Shouln't
it be one byte less in that case?