RISC-V调用约定与栈帧管理详解

RISC-V调用约定与栈帧详解

1. RISC-V调用约定概述

在RISC-V架构中,调用约定(Calling Convention)定义了函数调用时参数传递、寄存器使用和栈管理的规则。理解这些规则对于编写汇编代码和进行系统级编程至关重要。

RISC-V有两种主要的调用约定:

  1. RVG调用约定:用于支持标准扩展(如浮点运算)的实现
  2. 软浮点调用约定:用于不支持浮点硬件单元的实现

需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。

2. 寄存器使用规范

2.1 寄存器分类与用途

RISC-V寄存器在函数调用中扮演不同角色:

寄存器 ABI名称 用途 保存者
x0 zero 硬编码为0 -
x1 ra 返回地址 Caller
x2 sp 栈指针 Callee
x3 gp 全局指针 -
x4 tp 线程指针 -
x5-7 t0-2 临时寄存器 Caller
x8 s0/fp 帧指针/保存寄存器 Callee
x9 s1 保存寄存器 Callee
x10-11 a0-1 函数参数/返回值 Caller
x12-17 a2-7 函数参数 Caller
x18-27 s2-11 保存寄存器

内容推荐

已经到底了哦
已经到底了哦