Я узнал, что и jal
, и jalr
могут использоваться для вызова функций, тогда как, наоборот, только jal
может использоваться для возврата из функций, подобных этой:
sum3:
add a0, a0, a1
add a0, a0, a2
jalr x0, 0(ra)
Однако , этот код использует jal
вместо jalr
для возврата из функции, и он работает хорошо:
call sum3
ret_sum3:
# following instructions
# ...
sum3:
add a0, a0, a1
add a0, a0, a2
jal x0, ret_sum3
В связи с этим, почему говорят, что jalr
- это инструкция для возврата из функция? Я тоже могу использовать jal
. 1014 *