MIPS执行的指令总数

时间:2013-02-26 08:11:27

标签: assembly mips mips32

我有这段代码:

      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。那么这会使循环无限吗?

1 个答案:

答案 0 :(得分:1)

  

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

正确。

  

t2对于任何t1 <100。

正确。

  

s0在每个循环中增加4。

正确。

  

那么这会使循环无限吗?

不一定。

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

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