宿題 to mzp

mzp2006-05-22

次のCプログラムをMIPSアセンブラで記述せよ。

配列a,bのサイズは8ワードとする。

配列aの初期値はすべて5とする。

配列bの初期値は1,2,3,4,5,6,7,8とする。

Cプログラムは以下のようになる。

c = 5;
for(i=0;i<=7;i+=i+1)a[i]=b[i]+c;:

解答

a,bのアドレスは、それぞれ$s0,$s1に格納されているものとする。

        # c = 5
        addi $t0,$zero,5

        # i =0
        addi $t1,$zero,0
loop:
        # b[i] = a[i]
        add $t2,$t1,$t1
        add $t2,$t2,$t2
        lw $t3,$t2($s0)
        sw $t3,$t2($s1)

        # i <= 7
        beq $t1,8,exit

        # i += 1
        addi $t1,$t1,1
        j loop
exit:
        j exit