我了解到,jal和jalr都可以用于调用函数,而相反只能jal用于从这样的函数返回:
sum3:
add a0, a0, a1
add a0, a0, a2
jalr x0, 0(ra)
Run Code Online (Sandbox Code Playgroud)
但是,此代码使用jal而不是jalr从函数返回,并且效果很好:
call sum3
ret_sum3:
# following instructions
# ...
sum3:
add a0, a0, a1
add a0, a0, a2
jal x0, ret_sum3
Run Code Online (Sandbox Code Playgroud)
既然如此,为什么说jalr是函数返回的指令呢?我也可以用jal它。