RISC-V 有足够多的寄存器来达到两全其美的结果:既能将操作数存放在寄存器中,同时也能减少保存和恢复寄存器的次数。其中的关键在于,在函数调用的过程中不保留部分寄存器存储的值,称它们为临时寄存器(调用者保存寄存器,caller saved registers);另一些寄存器则对应地称为保存寄存器(被调用者保存寄存器,callee saved registe...
调用者保存(Caller-saved):临时寄存器(t0-t6)和参数寄存器(a0-a7)。调用函数前,调用者需要保存这些寄存器的值。 被调用者保存(Callee-saved):保存寄存器(s0-s11)和返回地址寄存器(ra)。被调用函数需要保存和恢复这些寄存器的值。 # 调用者函数 caller_function: # 保存调用者保存寄存器 addi sp, sp, -16 sd ...
在标准的RISC-V中,栈总是向低地址增长的,并且sp总是16字节对齐的。 除了参数和返回值寄存器,RISC-V还有七个整数寄存器(t0至t6),12个浮点数寄存器(ft0至ft11)用于暂存,它们在函数调用过程中是易失的。如果想要长期使用暂存的数据使用,函数调用方必须自己保存。12个整数寄存器(s0至s11)和12个浮点数寄存器(fs0至...
The purpose of this section is to describe the RISC-V specific instruction sequences with their associated relocations in addition to the general purpose machine word sized relocations that are used for symbol addresses in the Global Offset Table or DWARF meta data. The following table provides det...