MOVE.BALC rd, rt, address |
nanoMIPS, not available in NMS |
Move and Branch and Link, Compact |
Move and Branch and Link, Compact. Copy value of register $rt to register $rd, and performan unconditional PC relative branch to address, placing the return address in register $31.
nanoMIPS, not available in NMS
000010 |
rtz4[3] |
rd1 |
rtz4[2:0] |
s[20:1] |
s[21] |
6 |
1 |
1 |
3 |
20 |
1 |
if C0.Config5.NMS == 1: raise exception('RI') rd = decode_gpr(rd1, 'gpr1') rt = decode_gpr(rtz4[3] @ rtz4[2:0], 'gpr4.zero') offset = sign_extend(s, from_nbits=22) address = effective_address(CPU.next_pc, offset) GPR[rd] = GPR[rt] GPR[31] = CPU.next_pc CPU.next_pc = address
Although this instruction is called MOVE.BALC, the order of the updates to PC, $31 and $rd is invisible to software, and an implementation may choose any order for carring out these steps.
Reserved Instruction on NMS cores.