我对从程序约定返回的RISC-V有疑问。 通过分析从几个C程序生成的汇编代码,我观察到,当从过程调用返回时,返回地址通过使用堆栈指针寄存器作为源地址的加载指令存储在返回地址寄存器中。
这是一个例子:
<main>:
addi sp,sp,-48
sw ra,44(sp)
sw s0,40(sp)
...
...
lw ra,44(sp)
lw s0,40(sp)
addi sp,sp,48
ret
在计算影响返回地址的LOAD指令的源地址时,是否有任何强制GCC RISC-V编译器使用“帧指针”寄存器而不是“堆栈指针”寄存器的选项?