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 )

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

相关推荐
云渠道商yunshuguoji16 小时前
亚马逊云渠道商:怎么使用Spot实例实现成本降低70%?
运维·架构
o***Y36317 小时前
鸿蒙NEXT(五):鸿蒙版React Native架构浅析
react native·架构·harmonyos
ALex_zry17 小时前
Consul全方位入门指南:第二阶段—— 实操。Consul核心功能与项目集成
运维·docker·微服务·云原生·架构
TracyCoder12317 小时前
微服务注册中心基础(五):Zookeeper 适用场景
微服务·zookeeper·架构·注册中心
我是好小孩19 小时前
【Android】常见的架构模式:MVC, MCP, MVVM
android·架构·mvc
t***p93520 小时前
业务架构、数据架构、应用架构和技术架构
架构
G***E31621 小时前
PHP微服务通信消息队列实践
微服务·云原生·架构
稚辉君.MCA_P8_Java21 小时前
通义 Go 语言实现的插入排序(Insertion Sort)
数据结构·后端·算法·架构·golang
语落心生21 小时前
探秘新一代向量存储格式Lance-format (十三) 数据更新与 Schema 演化
架构
语落心生1 天前
探秘新一代向量存储格式Lance-format (八) Dataset 核心实现与生命周期
架构