MIPS で次の C コードを複製しようとしています。
//sum, n and added are integers and have already been initialized
if(n%3 == 0){
sum = sum + n;
added = added + 1;
}
これが私がやってみたものです。
#Let t0 = n
#Let s0 = sum
#Let a0 = added
#All have been set earlier in the program
addi $t1, $zero, 3 #Let t1 = 3 for division
div $t0, $t1 #Remainder will be stored in $HI
bne $HI, $zero, ENDIF #skip to ENDIF when remainder != 0; same as if(n%3 == 0)
add $s0, $s0, $t0
addi $a0, $a0, 1
ENDIF:
MIPS シミュレーター (QtSpim を使用しています) で実行すると、if ステートメントでコンパイラ エラーが発生します。それは読みます:
bne $HI, $zero, ENDIF #skip to ENDIF when remainder != 0; same as if(n%3 == 0)
^
正確には、ステートメントの何が問題になっていますか?^ が $HI の下にあることがわかります。div ステートメントに何か問題があり、$HI でエラーが発生していますか? または、そのようなブランチでは $HI を使用できませんか? $HI を一時レジスターに移動する必要がありますか? それともとにかく分岐文に何か問題がありますか?
助けてくれてありがとう!