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 和 s0 在每个循环中递增 4 为 1 时循环终止。那么这会使循环无限吗?

4

1 回答 1

1

我认为是当 t2 == s0 时循环终止。

正确的。

对于任何 t1<100,t2 为 1。

正确的。

s0 在每个周期中递增 4。

正确的。

那么这会使循环无限吗?

不必要。

如果lw $s1,0($s0)试图访问受保护的内存,您的程序将被操作系统终止。

此外,如果任何添加指令导致溢出,您的程序也可能会被操作系统终止。只有无符号添加指令(addu等)不会产生异常/陷阱。

于 2013-02-26T08:54:14.673 回答