Застрял в бесконечном цикле, используя JAL
main:
jal function1
#Exit Program
li $v0, 10
syscall
function1:
li $s0, 0
jal function2
jr $ra
function2:
jal external_function
beq $s0, 5, function2_end
#Run loop 5 times
addi $s0, $s0, 1
function2_end:
jr $ra
external_function:
#Does random operation
jr $ra
Так что это всего лишь пример проблемы того, что я имею с MIPS. Я застрял в бесконечном цикле, потому что function2_end будет продолжать переходить к external_function.
Есть ли способ заставить function2_end перейти назад к function1, чтобы он мог выйти из цикла?
1 ответ
jal
сохраняет ценность $ra
, перезаписывая любое предыдущее значение. Что вы хотите сделать, это сохранить $ra
в стек, когда это необходимо, а затем вставьте его, когда захотите.