2012-04-30 8 views
1

このMIPSプログラムでMIPSコードで実行された命令の総数?

このコードフラグメントを実行すると、合計でいくつの命令が実行されますか?すべてのサイクルで

i1: ori $t0, $0, 1000 
i2: ori $t1, $0, 2000 
i3: addi $t2, $t0, 100 
i4: lw $t3, 0($t1) 
i5: lw $t4, 0($t0) 
i6: add $t3, $t3, $t4 
i7: sra $t3, $t3, 1 
i8: sw $t3, 0($t0) 
i9: sw $t3, 0($t1) 
i10: addi $t0, $t0, 4 
i11: addi $t1, $t1, 4 
i12: slt $t3, $t0, $t2 
i13: bne $0, $t3, i4 

答えて

0

、それはサイクルの終わりに1000に初期化され、$ T0に4を追加します$ t0のは、それならば1100に初期化されている$ T2よりも大きいかどうかをチェックは、サイクルが壊れます。したがって、元の13個の命令と、それが壊れるまでの各サイクルごとの10個の命令です。そしてそれはさらに25回サイクルする。そして、私は間違って追加しているかもしれませんが、そうでなければ263の指示です。

+0

これは、253回です。10回の命令で25回、最初のサイクルで3回加算されます。 – blackcompe

+0

$ t0が$ t2より大きい、等しくないまで、それは壊れません。それは26回のフルサイクル、13回目は1サイクル目、10回目は残りのサイクルを繰り返す。 – alf

+1

等しい場合は破損します。それは 'slt'であり、' sle'ではありません。自分でテストを実行してください:https://gist.github.com/2572845 – blackcompe