RISC-V调用约定详解:RV32G/RV64G与RV32E规范
需积分: 22 91 浏览量
更新于2024-08-08
收藏 3.65MB PDF 举报
调用约定在RISC-V架构中的重要性体现在其对程序执行效率和内存管理的标准化处理。在中移4G.cat1模组 ML302产品规格说明书中,章节20详细描述了针对RV32(32位)和RV64(64位)架构的两种调用约定:基本ISA加上标准通用扩展(RV32G和RV64G)。这些约定关注于如何在缺乏浮点单元的情况下,通过软浮点进行函数参数传递和内存操作。
首先,C编译器支持的数据类型在RV32和RV64中有所不同。在RV32中,所有整数类型(如int、long、long long)均为32位,采用ILP32整数模型,而RV64则支持64位整数。此外,C语言中的float和double在RV32和RV64中分别占用32和64位,且对数据类型进行存储时遵循自然对齐规则。例如,char和unsigned char在存储时会被零扩展,而signed char和short则根据符号扩展。
对于RVG调用约定,RISC-V倾向于在寄存器中传递尽可能多的参数,最多使用8个整数寄存器a0-a7。调用约定的变化包括:
1. 对于RV64,增加了对32位整数类型如int的正确符号扩展,确保在保存到寄存器时保持数据完整性。
2. 修改了长指令编码,以优化指令格式,尤其是在处理大地址空间时。
3. 引入了计数器寄存器,并将其标准化描述在基本整数指令集中,而不是仅限于浮点部分。
4. CALL和SBREAK指令更名为了ECALL和EBREAK,保持了原有的功能但更新了标识。
5. 对浮点NaN处理和转换溢出规则进行了澄清,确保一致性。
6. LR/SC操作的规范得到了修订,包括压缩指令的使用。
7. 提出了RV32E基本ISA,旨在减少整数寄存器的需求,简化设计。
8. 软浮点调用约定的栈对齐规则有所调整,并特别描述了针对RV32E的调用约定。
9. C压缩扩展提案得到了更新,版本1.9,强调了基本ISA和通用扩展在未来版本中的稳定性。
RISC-V的调用约定对于编写高效的RISC-V程序至关重要,它定义了数据在函数调用和内存访问中的布局,确保了不同架构之间的互操作性和代码的可移植性。同时,随着RISC-V的发展,不断优化的调用约定反映了对性能和兼容性的持续追求。
2021-10-04 上传
866 浏览量
1083 浏览量
点击了解资源详情
3394 浏览量
18418 浏览量
2358 浏览量
1726 浏览量
1085 浏览量
李_涛
- 粉丝: 54
- 资源: 3915
最新资源
- ***+SQL三层架构体育赛事网站毕设源码
- 深入探索AzerothCore的WoTLK版本开发
- Jupyter中实现机器学习基础算法的教程
- 单变量LSTM时序预测Matlab程序及参数调优指南
- 俄G大神修改版inet下载管理器6.36.7功能详解
- 深入探索Scratch编程世界及其应用
- Aria2下载器1.37.0版本发布,支持aarch64架构
- 打造互动性洗车业务网站-HTML5源码深度解析
- 基于zxing的二维码扫描与生成树形结构示例
- 掌握TensorFlow实现CNN图像识别技术
- 苏黎世理工自主无人机系统开源项目解析
- Linux Elasticsearch 8.3.1 正式发布
- 高效销售采购库管统计软件全新发布
- 响应式网页设计:膳食营养指南HTML源码
- 心心相印婚礼主题响应式网页源码 - 构建专业前端体验
- 期末复习指南:数据结构关键操作详解