调用者保存(Caller-saved):临时寄存器(t0-t6)和参数寄存器(a0-a7)。调用函数前,调用者需要保存这些寄存器的值。 被调用者保存(Callee-saved):保存寄存器(s0-s11)和返回地址寄存器(ra)。被调用函数需要保存和恢复这些寄存器的值。 # 调用者函数 caller_function: # 保存调用者保存寄存器 addi sp, sp, -16 sd ...
RISC-V 有足够多的寄存器来达到两全其美的结果:既能将操作数存放在寄存器中,同时也能减少保存和恢复寄存器的次数。其中的关键在于,在函数调用的过程中不保留部分寄存器存储的值,称它们为临时寄存器(调用者保存寄存器,caller saved registers);另一些寄存器则对应地称为保存寄存器(被调用者保存寄存器,callee saved registe...
在标准的RISC-V中,栈总是向低地址增长的,并且sp总是16字节对齐的。 除了参数和返回值寄存器,RISC-V还有七个整数寄存器(t0至t6),12个浮点数寄存器(ft0至ft11)用于暂存,它们在函数调用过程中是易失的。如果想要长期使用暂存的数据使用,函数调用方必须自己保存。12个整数寄存器(s0至s11)和12个浮点数寄存器(fs0至...
RISC-V is a classical RISC architecture that has densely packed non-word sized instruction immediate values. While the linker can make relocations on arbitrary memory locations, many of the RISC-V relocations are designed for use with specific instructions or instruction sequences. RISC-V has sever...