0
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,所以它可以退出循环?

4

1 回答 1

1

jal保存 的值$ra,覆盖之前的任何值。您要做的是$ra在必要时将其保存到堆栈中,然后在需要时将其弹出。

于 2014-10-13T21:00:27.810 回答