J型指令主要是无条件转移指令,其特点是仅有操作码和地址码两个字段,采用伪直接寻址,有效地址EA 用PC+4的高4位与26位的imm经左移2位后拼接得到: J型指令常用的有两个:j 和 jal 注意:jr和jalr虽然也实现无条件跳转,但不是J型。 04 指令功能 本部分参考:龙芯杯MIPS指令系统规范手册,开源,上传至博客文件。
J/JR可以用JAL/模拟,JALR因为后者执行前者的操作的超集。 正如@Jester 指出的那样,例程(C 术语中的函数)必须小心地将它们的返回地址保留在$ra. 除非例程是叶例程(不执行任何调用的例程),$ra否则必须将其保存在某处。 实际上,JAL/JALR和J/JR都可以通过另一个来实现: ...
前面我们已经对MIPS架构CPU有了粗略的了解。显然,它提供了众多优秀的功能。但是,应用的场景不同,往往...
J型指令的无条件分支指令:j, jal MIPS寄存器 在R和I型指令格式中,寄存器操作数字段均为5位,可编号32个寄存器 另外还有 32个32位单精度浮点寄存器f0- f31 2个32位乘、商寄存器Hi和L0:运算乘法时分别存放64位乘积的高、低32位; 除法时分别存放余数和商 浮点寄存器和乘商寄存器没有编号,对程序员来说是透明的...
jal target ``` 其中target是跳转目标地址,需要满足4字节对齐。该指令将PC的当前值保存到$31寄存器中,并将PC的前28位替换为target,最后两位替换为PC的当前高4位。这样就可以实现有条件跳转到指定地址的功能,并且保存返回地址以便后续程序执行。 4. JALR(Jump And Link Register)指令 JALR指令用于有条件跳转到寄存器...
j/jr/jal/jalr:j直接跳转;jr使用寄存器跳转; lui:把一个16位的立即数填入到寄存器的高16位,低16位补零。 sll/srl:逻辑左移/右移sll 1,[Math Processing Error] 2,#2。 slt/slti/sltui:如果2的值小于[Math Processing Error]3,那么设置1的值为1,否则设置[Math Processing Error]1的值为0。slt 1,...
两个操作数和结果都在寄存器 R型指令功能: 运算指令:包括各种算数、逻辑、移位运算。R型指令基本都是运算指令 控制转移指令:有jr和jalr 2. I型指令 一个操作数是立即数,另一个操作数和结果在寄存器 16位的立即数需要扩展到32位参与运算,依据具体指令不同可能要进行符号扩展或零扩...
j类型指令只能单独跳转到相应的标志位,且跳转范围不如jar,jalr等指令 loop: xxxx xxxxx j loop 这里的跳转需要注意$ra寄存器,他会记录每一次跳转之后的PC+4值。(这里的PC可以简单理解为当前程序执行的代码,+4就是下一条代码的位置)所以在函数调用中用到了j类指令,注意维护$ra的值(jr $ra是返回记录的相应位置...
有14条指令:jr 、jalr 、j 、jal、b、bal、beq、bgez、bgezal、bgtz、blez、bltz、bltzal、bne,其中既有无条件转移,也有条件转移,用于程序转移到另一个地方执行。 6、加载存储指令 有14条指令:lb、lbu、lh、lhu、ll、lw、lwl、lwr、sb、sc、sh、sw、swl、swr,以“l”开始的都是加载指令,以“s”开始...
j类型指令只能单独跳转到相应的标志位,且跳转范围不如jar,jalr等指令 loop: xxxx xxxxx j loop 这里的跳转需要注意$ra寄存器,他会记录每一次跳转之后的PC+4值。(这里的PC可以简单理解为当前程序执行的代码,+4就是下一条代码的位置)所以在函数调用中用到了j类指令,注意维护$ra的值(jr $ra是返回记录的相应位置...