MIPS架构中的条件与无条件转移指令详解

需积分: 48 45 下载量 66 浏览量 更新于2024-08-07 收藏 4.08MB PDF 举报
"该文档是STM32F103XX微控制器针对永磁同步电机(PMSM)的FOC(Frequency Oriented Control)软件库的用户手册,主要讨论了MIPS架构中的跳转和转移指令,特别是条件和无条件的分支指令。手册引用了MIPS32架构的相关资料,包括不同类型的跳转、链接和条件分支指令,用于程序流程的控制。" 在MIPS架构中,程序员需要理解不同类型的转移指令来有效地编写代码。5.3.3.2章节提到延迟转移指令,这是一种在MIPS处理器中特有的现象,其中转移指令的效果会在下一条指令执行后才体现,这需要程序员在设计代码时特别注意。 表5.15列举了无条件跳转到256MB对齐区域内的指令,如`J`和`JAL`,`JAL`指令不仅跳转,还会将当前程序计数器(PC)的值存储在寄存器中,以便函数返回。而`JALX`是MIPS16e的一个扩展,但在MIPS32 Release 3的版本6中已被删除。 表5.16则列出了使用寄存器中保存的绝对地址进行跳转的指令,如`JALR`和`JR`,其中`JALR`用于跳转并链接,`JR`则简单地跳转到寄存器指定的地址。在某些版本中,`JR`指令带有`HB`( Hazard Barrier)后缀,用于处理数据 hazards。 表5.17和5.18讨论了条件分支指令。`BEQ`和`BNE`是比较两个寄存器内容后根据结果进行分支的指令,如果相等则执行分支(`BEQ`),如果不等则执行分支(`BNE`)。而`BGEZ`系列指令则是基于寄存器值与零的比较来决定是否执行分支,如果大于或等于零,则执行分支。 此外,手册还提到了一些已废弃的转移指令,可能在特定版本的MIPS ISA中不再支持,如表5.19所示,这提醒程序员需要关注他们使用的指令集版本。 MIPS32架构是MIPS架构的一个版本,随着时间的推移,它经历了多个修订版,例如版本2、3、5和6,每个新版本都可能引入新的特性和指令,同时也可能删除一些旧的或不再推荐使用的指令。对于MIPS架构的程序员来说,了解这些变化以及如何适应不同版本的ISA是非常重要的。