MIPS架构中的条件与无条件转移指令详解
需积分: 48 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是非常重要的。
2014-09-30 上传
2018-01-31 上传
2021-08-12 上传
2020-03-05 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
Matthew_牛
- 粉丝: 41
- 资源: 3797
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析