RISC-V指令集手册:软浮点调用约定与RV32E子集
需积分: 22 109 浏览量
更新于2024-08-08
收藏 3.65MB PDF 举报
"软浮点调用约定及RISC-V指令集手册的更新内容"
RISC-V指令集手册是描述其用户级指令集体系结构的关键文档,2.1版主要针对之前版本进行了多项改进和补充。以下是核心知识点的详细解释:
1. **软浮点调用约定**:在没有浮点硬件支持的RISC-V实现中,如RV32和RV64,软浮点调用约定被使用。这种方法不依赖于F、D、Q标准扩展的浮点指令和寄存器,而是利用整型指令和寄存器处理浮点数据。栈对齐要求降低到XLEN/8字节边界,比如在RV32I中是4字节对齐。浮点参数和返回值通过整数寄存器传递,如在RV32中,double类型的参数通过a2和a3传递,结果则在a0和a1中返回。
2. **动态舍入模式和异常标志**:这些可通过C99头文件`fenv.h`中的函数访问,允许在运行时控制浮点运算的精度和异常处理。
3. **RV32E调用约定**:作为软浮点调用约定的一个子集,RV32E仅使用16个整数寄存器,限制了参数、保存和临时寄存器的数量。栈对齐遵循4字节边界。这使得在资源受限的系统中可以更有效地使用内存。
4. **指令集的改进**:
- 更改了64位以上长指令的编码,避免在长格式指令中移动`rd`区分符。
- CSR(控制和状态寄存器)指令现在基于基本整数格式描述,引入了计数器寄存器。
- `SCALL`和`SBREAK`指令分别被重命名为`ECALL`和`EBREAK`,但功能保持不变。
- 浮点数的NaN处理和溢出转换规则得到澄清。
- LR/SC(Load-Linked/Store-Conditional)指令的执行条件和失败情况进一步明确,包括与压缩指令的交互。
- 提出了新的RV32E基本ISA提案,减少了整数寄存器的数量。
- 调用约定进行了修订,软浮点调用约定的栈对齐规则放宽,同时定义了RV32E的调用约定。
- C压缩扩展提案更新至版本1.9。
这些改动和更新确保了RISC-V指令集的不断完善,以适应更多应用场景,并为开发者提供了更清晰的指导。同时,软浮点调用约定的灵活性使RISC-V能够在资源有限的环境中高效地处理浮点计算。
551 浏览量
2022-09-23 上传
2021-07-12 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
Matthew_牛
- 粉丝: 41
- 资源: 3810
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫