RISC-V 架构寄存器规范

a0 - a7( x10 - x17 )

调用者保存,用来传递输入参数。其中的 a0 和 a1 还用来保存返回值

t0 - 6( x5 - x7, x28 - x31 )

调用者保存,作为临时寄存器使用,在被调函数中可以随意使用无需保存

s0 - s11( x8 - x9, x18 - x27 )

被调用者保存,作为临时寄存器使用,被调函数保存后才能在被调函数中使用

zero( x0 )

它恒为零,函数调用不会对它产生影响

ra( x1 )

调用者保存,被调用者函数可能也会调用函数,在调用之前就需要修改 ra 使得这次调用能正确返回。因此,每个函数都需要在开头保存 ra 到自己的栈帧中,并在结尾使用 ret 返回之前将其恢复。栈帧是当前执行函数用于存储局部变量和函数返回信息的内存结构

sp( x2 )

调用者保存,栈指针 (Stack Pointer) 寄存器,它指向下一个将要被存储的栈顶位置

fp( s0 )

被调用者保存,它既可作为s0临时寄存器,也可作为栈帧指针(Frame Pointer)寄存器,表示当前栈帧的起始位置。fp 指向的栈帧起始位置 和 sp 指向的栈帧的当前栈顶位置形成了所对应函数栈帧的空间范围

gp( x3 ) , tp( x4 )

在一个程序运行期间都不会变化,因此不必放在函数调用上下文中

相关推荐
晚霞的不甘8 分钟前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频
代码改善世界1 小时前
CANN深度解构:中国AI系统软件的原创性突破与架构创新
大数据·人工智能·架构
晚霞的不甘1 小时前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频
Tadas-Gao2 小时前
TCP粘包现象的深度解析:从协议本质到工程实践
网络·网络协议·云原生·架构·tcp
礼拜天没时间.3 小时前
深入Docker架构——C/S模式解析
linux·docker·容器·架构·centos
啊森要自信3 小时前
CANN runtime 深度解析:异构计算架构下运行时组件的性能保障与功能增强实现逻辑
深度学习·架构·transformer·cann
WindrunnerMax3 小时前
从零实现富文本编辑器#11-Immutable状态维护与增量渲染
前端·架构·前端框架
vx-bot5556663 小时前
企业微信接口在金融级业务场景下的合规架构与实践
金融·架构·企业微信
jerwey3 小时前
OpenClaw 架构与组件说明
架构·openclaw
sun03223 小时前
【架构基础】Spring中的PropertySourcesPlaceholderConfigurer介绍 (并非新知识,比较古老的一种使用方式)
java·spring·架构