【问题标题】:MIPS total number of instruction executedMIPS 执行的指令总数
【发布时间】:2013-02-26 08:11:27
【问题描述】:

我有这个代码:

      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 时终止 对于任何 t1

【问题讨论】:

    标签: assembly mips mips32


    【解决方案1】:

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

    正确。

    t2 是任何 t1

    正确。

    s0 在每个循环中递增 4。

    正确。

    那么这会使循环无限吗?

    不一定。

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

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

    【讨论】:

    • 好点,我想知道的还有一件事,如果我们使用 32 位寻址,那么在 2^32 之后我们将用完地址,那么它会重置为基础吗?假设为程序分配的内存大于 2^32(如果可能的话!!)
    • 您的寄存器是 32 位的,不是吗?因此,没有机会寻址超过 2^32 字节的内存,甚至“分配”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    相关资源
    最近更新 更多