MIPS

今日はもうすぐ提出のはずのMipsのプログラムを書いています。
といっても、20行程度なので楽そう。

だが、どこかで失敗して永久ループしているみたい。全然プログラムが終わらない。ループとしては8回で終わって欲しいのに、かなりずっとやっている。どうしよ…。

.data
arrayb: .word 7,7,7,7,7,7,7,7 #b[i]=7として、初期化

.text
.globl main # main関数の宣言.
main:
lui $a0, 0x1000 # $a0=0x10000000 $a0の上位16ビットに0x1000を入れる
la $a1, arrayb # レジスタ$a1にb[0]のアドレスをロード

addi $s0, $zero, 5 # c=$s0=5
addi $t5, $zero, 7 # 後々のための布石

Loop: add $t1, $t0, $t0 # $t1=2i
add $t1, $t1, $t1 # $t1=4i
add $s1, $t1, $a0 # a[i]=$s1=4i+a[0]のアドレス
add $s2, $t1, $a1 # b[i]=$s2=4i+b[0]のアドレス

add $t4, $t3, $s0 # $t4=b[i]+c
sw $t4, 0($s1) # a[i]=$t4

slt $s3, $t0, $t5 # if $t0<$t5 then $s3=1 else $s3=0
bne $s3, $zero, Loop # $s3≠0のとき、Loopにとぶ

#終了処理
jr $ra # プログラムの終了