寄存器指南
RISC-V v19 / v19 向量数据寄存器寄存器
v19 是 RVV 向量寄存器,元素宽度和分组由 vtype 决定,实际处理元素数由 vl 决定。
ABI 名称:v19;物理寄存器:v19。
保存责任:调用者。
先按 psABI 角色理解它,再看具体指令如何读写。
物理编号 v19ABI 名 v19保存责任 调用者
角色
向量数据寄存器
调用约定
调用者保存
先记一句
t* 属于 caller-saved,callee 可以覆盖。
psABI 规范依据
ABI 寄存器
v19 是 RVV 向量寄存器,元素宽度和分组由 vtype 决定,实际处理元素数由 vl 决定。
调用后保持:调用者
RISC-V psABI integer register convention适合什么时候用
- - 保存短生命周期临时计算结果。
- - 在不会跨函数调用存活的局部计算里使用。
- - 作为 caller 自行管理的 scratch register。
什么时候不要这样用
- - 不要把 t* 用来保存 call 之后还要用的值,除非调用前自己保存。
- - 不要把 t* 当成 callee 会帮你恢复的寄存器。
调用前后会发生什么
1
t* 属于 caller-saved,callee 可以覆盖。
2
如果 caller 在 call 后还需要 t* 的值,caller 必须提前保存。
临时值跨 call 前先自保
示例用于理解规则,不替代完整程序addi t0, a0, 1
# 如果 call 后还要用 t0,caller 先保存到 ABI 合法的位置
call foo
# call 返回后再从该保存位置恢复 t0