RISC-V指令集手册:软浮点调用约定与RV32E子集

需积分: 22 84 下载量 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能够在资源有限的环境中高效地处理浮点计算。