[<<][arm][>>][..]
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?




[Reply][About]
[<<][arm][>>][..]