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 )

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

相关推荐
敖行客 Allthinker1 小时前
云原生安全观察:零信任架构与动态防御的下一代免疫体系
安全·ai·云原生·架构·kubernetes·ebpf
鹏程十八少2 小时前
10.Android 设计模式 核心模式之四动态代理 在商业项目中的落地
架构
星辰大海的精灵2 小时前
FastAPI开发AI应用,多厂商模型使用指南
人工智能·后端·架构
前端付豪2 小时前
2、前端架构三要素:模块化、工程化、平台化
前端·javascript·架构
timeweaver2 小时前
前端救星:玩转 Nginx 配置,10 倍提升你的项目部署体验 🚀
前端·架构
uhakadotcom2 小时前
刚刚,Golang更新了, 1.24.5 与 Go 1.23.11有啥新能力?
后端·面试·架构
DemonAvenger3 小时前
Go中UDP编程:实战指南与使用场景
网络协议·架构·go
Jay Kay9 小时前
TensorFlow内核剖析:分布式TensorFlow架构解析与实战指南
分布式·架构·tensorflow
亿牛云爬虫专家11 小时前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
kangkang-12 小时前
PC端基于SpringBoot架构控制无人机(三):系统架构设计
java·架构·无人机