我有這個節目,我只寫了:用MIPS編寫的程序如何知道返回什麼?
countzeroes:
li $v0, 0 # count = 0
li $t0, 0 # int i = 0
li $v1, 1 # compare bit = 1
cz_loop:
bge $t0, 32, cz_exit # exit loop if i >= 32
andi $t1, $a0, 1 # bit = arg0 & 1
beq $t1, $v1, cz_skip # skip if bit = 1
addi $v0, $v0, 1 # adds 1 to count
cz_skip:
srl $a0, $a0, 1 # shifts input right by 1
add $t0, $t0, 1 # i++
j cz_loop
cz_exit:
jr $ra
非常簡單,只需計算一個32位字中的零數。我想知道程序如何知道如何在最後返回$ v0?我知道v0和v1是返回寄存器,但我想知道這兩個是否總是返回。如果沒有,該程序如何知道返回v0?
另外,我知道jr $ ra跳轉到返回地址 - 但是這是什麼意思?
感謝您的幫助。
謝謝@ kevinkl3。我想知道在這種情況下程序知道如何返回v0? – jstnchng 2014-11-03 06:24:25
因爲你在那個寄存器addi $ v0中存儲返回值,所以如果你爲這個addi $ v1,$ v1,1改變了這個指令,那麼$ 1,#1加1,程序將返回價值在$ v1,它不知道這完全取決於你。 – kevinkl3 2014-11-03 06:30:42