|
### Jump Register |
|
--- JSR |
|
{ |
|
uint16_t long_flag = (instr >> 11) & 1; |
|
reg[R_R7] = reg[R_PC]; |
|
if (long_flag) |
|
{ |
|
uint16_t long_pc_offset = sign_extend(instr & 0x7FF, 11); |
|
reg[R_PC] += long_pc_offset; /* JSR */ |
|
} |
|
else |
|
{ |
|
uint16_t r1 = (instr >> 6) & 0x7; |
|
reg[R_PC] = reg[r1]; /* JSRR */ |
|
} |
|
break; |
|
} |
|
--- |