0

私はこのコードを持っています:

      addi $t1, $zero, $zero
LOOP: lw $s1,0($s0)
      add $s2, $s2, $s1
      addi $s0, $s0, 4
      addi $t1, $t1, 1
      slti $t2, $t1, 100
      bne $t2, $s0, LOOP

問題は、実行された命令の総数です。

s0=0 と仮定すると

私が考えているのは、t2 == s0 t2 が t1<100 の場合に 1 であり、s0 がサイクルごとに 4 ずつ増加すると、ループが終了することです。それで、ループは無限になりますか?

4

1 に答える 1

1

私が思うのは、t2 == s0 のときにループが終了することです。

正しい。

t2 は、t1<100 の場合は 1 です。

正しい。

s0 は、サイクルごとに 4 ずつ増加します。

正しい。

それで、ループは無限になりますか?

必ずしも。

保護されたメモリにアクセスしようとするlw $s1,0($s0)と、プログラムは OS によって終了されます。

また、追加命令のいずれかでオーバーフローが発生した場合、プログラムもおそらく OS によって終了されます。unsigned add 命令 (adduなど) のみが例外/トラップを生成しません。

于 2013-02-26T08:54:14.673 に答える