RISC-V指令集手册:软浮点调用与RV32E约定解析
需积分: 50 74 浏览量
更新于2024-08-09
收藏 3.65MB PDF 举报
"软浮点调用约定与RISC-V指令集手册的用户级指令集体系结构"
在RISC-V架构中,软浮点调用约定是一种针对没有浮点硬件的RV32和RV64实现的设计。这种约定不使用F、D、Q标准浮点扩展中的指令和浮点寄存器,而是依赖于整数指令来处理浮点运算。在软浮点调用约定下,整型参数和栈的管理与RVG调用约定类似,但栈只需对齐到XLEN/8字节边界,减少了对栈对齐的要求,这在内存紧张的系统中节省了空间。
浮点参数通过整数寄存器传递和返回。例如,在RV32中,一个接受一个整数和两个浮点参数的函数`double foo(int, double, long double)`,第一个参数通过a0寄存器传递,第二个参数通过a2和a3寄存器,第三个参数的引用通过a4寄存器传递。结果则会存储在a0和a1寄存器中。在RV64中,参数传递和返回则涉及更多的整数寄存器对。
对于动态舍入模式和异常标志的处理,C99头文件`fenv.h`提供了访问这些功能的例程。这意味着在软浮点调用约定中,浮点操作的控制和状态管理是通过软件实现的。
此外,RV32E调用约定是软浮点调用约定的一个子集,适用于只有16个整数寄存器的RV32E架构。在这种情况下,只有6个参数寄存器(x10-x15)、2个保存的寄存器(x8-x9)和3个临时寄存器(x5-x7)可用。栈对齐保持在4字节边界。
RISC-V指令集手册卷1描述了用户级指令集体系结构,涵盖了从基本的整数格式到浮点、压缩指令等扩展。手册的2.1版对之前的内容进行了更新和完善,包括增加注释、修正长指令编码、明确CSR指令的整数格式描述、更改了某些指令的名称(如将SCALL和SBREAK改为了ECALL和EBREAK),并进一步明确了浮点运算的处理规则,特别是NaN的处理和浮点到整数转换的溢出行为。此外,手册还包含了LR/SC指令的使用条件,以及新的RV32E基本ISA提案和C压缩扩展提案的修订。
RISC-V架构的稳定性和标准化是其设计的关键特点,使得开发者能够在未来版本中依赖这些基本的用户ISA和通用扩展,如IMAFDQ,保持不变。自1.0版本以来,ISA经历了重大改进,包括将整数基本内核与标准扩展分离,优化了立即数编码,以及对调用约定和软浮点处理的修订。这些变化旨在提高效率,简化软件开发,并增强RISC-V架构的兼容性和灵活性。
2024-06-30 上传
2021-06-30 上传
2020-08-18 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
锋锋老师
- 粉丝: 26
- 资源: 3866
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器