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 に答える