現在、MIPS プログラムに QtSpim を使用しています。目的は、加算を使用して乗算することです。これは比較的簡単な私のコードです:
.data
inputX: .word 5
inputY: .word 4
tempX: .word 0
constantOne: .word 1
finalX: .word 0
.text
main:
lw $t1, inputX
lw $t2, inputY
lw $t0, tempX
lw $t3, constantOne
lw $t4, finalX
beq $t2, $zero, Exit #when Y equals zero, X is already zero so exits.
Loop: beq $t2, $t3, yIsOne #when y is one skip rest of loop
add $t0, $t1, $t1 #actual "multiplication".
sub $t2, $t2, $t3 #what makes loop continue
bne $t2, $zero, Loop #while Y isnt yet 0.
yIsOne: add $t0, $t0, $t1 #adds X to 0 or the multiplied Xs
Exit:
sw $t4, finalX
プログラムを実行すると、次のようになります。
R8 [t0] = f
R9 [t1] = 5
R10 [t2] = 1
R11 [t3] = 1
R12 [t4] = 0
これは非常に不可解だったので、シングルステップを実行し、最初に t0 の合計に 5 を追加する必要がありましたが、a になりました。yIsOne ジャンプの後、f になるまでそのままでした。他のすべては正常に動作しているようです。ループのために正しくジャンプします。t2 は毎回 1 ずつ減算されます。どんな助けでも大歓迎です。ありがとう。