Besides the flags, and differences in cycle count, the more important difference is that
JMP x uses the effective address of
MOV x,R7 uses the value at
x. In other words, there's one level less of indirection, similar to the
MOV opcodes for the x86.
JMP R1 faults, and
JMP @R1 is equivalent to
This means one can use
JMP d(R7) for relative jumps with a full 16-bit displacement (
BR d only has an 8-bit displacement, which is often not enough). In the same way, one can store the address of some block of code (library) in, say,
R1, and use
JMP d(R1) to jump to a fixed displacement inside this code block. All of this is not possible with a single
It doesn't make sense to access a register via the memory mapped address instead of just using it directly, because accessing them this way would need one more word per instruction, and therefore is inefficient.