Допустим, у меня есть:MIPS: Сохранение адреса возврата в вложенных процедур
main:
// stuff
jal function_a
function_a:
// function_a stuff
jal function_b
jr $ra
function_b:
// function_b stuff
jr $ra
Из того, что я понимаю, главный сохраняет соответствующий адрес возврата в $ ра, когда он делает JAL function_a, но затем function_a переписывает $ ра когда он выполняет jal function_b, поэтому, очевидно, $ ra необходимо сохранить в какой-то момент. Но я не могу найти ничего, что фактически говорит, что конвенция для этого. Я храню $ ra в стеке, пока в функции_a перед вызовом jal function_b
? Я храню $ ra в s-регистре перед вызовом jal function_b
, а затем сохраните этот s-регистр в начале функции function_b (что, я думаю, подразумевалось here)? Что-то другое? Это имеет значение?
Имеет смысл, спасибо. – Tyler