POP76 111110 |
JIALC 00000 |
rt |
offset |
6 |
5 |
5 |
16 |
JIALC rt, offset |
MIPS32 Release 6 |
Jump Indexed and Link, Compact |
Jump Indexed and Link, Compact
GPR[31] = PC+4, PC =( GPR[rt] + sign_extend( offset ) )
The jump target is formed by sign extending the offset field of the instruction and adding it to the contents of GPR rt.
The offset is NOT shifted, that is, each bit of the offset is added to the corresponding bit of the GPR.
Places the return address link in GPR 31. The return link is the address of the following instruction, where execution continues after a procedure call returns.
For processors that do not implement the MIPS16e or microMIPS ISA:
Jump to the effective target address derived from GPR rt and the offset. If the target address is not 4-byte aligned, an Address Error exception will occur when the target address is fetched.
For processors that do implement the MIPS16e or microMIPS ISA:
Jump to the effective target address derived from GPR rt and the offset. Set the ISA Mode bit to bit 0 of the effective address. Set bit 0 of the target address to zero. If the target ISA Mode bit is 0 and the target address is not 4byte aligned, an Address Error exception will occur when the target instruction is fetched.
Compact jumps do not have delay slots. The instruction after the jump is NOT executed when the jump is executed.
This instruction is an unconditional, always taken, compact jump, and hence has neither a delay slot nor a forbidden slot. The instruction after the jump is not executed when the jump is executed.
The register specifier may be set to the link register $31, because compact jumps do not have the restartability issues of jumps with delay slots. However, this is not common programming practice.
This instruction is introduced by and required as of Release 6.
Release 6 instructions JIALC and BNEZC differ only in the rs field, instruction bits 21-25. JIALC and BNEZC occupy the same encoding as pre-Release 6 instruction encoding SDC2, which is recoded in Release 6.
None
temp = GPR[rt] + sign_extend(offset) GPR[31] = PC + 4 if (Config3ISA = 0) and (Config1CA = 0) then PC = temp else PC = (tempGPRLEN-1..1 || 0) ISAMode = temp0 endif
JIALC does NOT shift the offset before adding it the register. This can be used to eliminate tags in the least significant bits that would otherwise produce misalignment. It also allows JIALC to be used as a substitute for the JALX instruction, removed in Release 6, where the lower bits of the target PC, formed by the addition of GPR[rt] and the unshifted offset, specify the target ISAmode.