【问题标题】:Total number of instructions executed in MIPS code?MIPS 代码中执行的指令总数?
【发布时间】:2012-04-30 05:46:40
【问题描述】:

在这个 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

【问题讨论】:

    标签: mips instructions


    【解决方案1】:

    在每个循环中,它在 $t0 上加 4,初始化为 1000。在循环结束时,它检查 $t0 是否大于 $t2,初始化为 1100。如果是,则循环中断。因此,它是最初的 13 条指令,每个周期加上 10 条指令,直到它中断。它会额外循环 25 次。而且我可能加错了,如果没有,那就是263条指令。

    【讨论】:

    • 是 253。10 条指令的 25 个循环,加上第一个循环的 3 个。
    • 不,直到 $t0 大于 $t2 才中断,不等于。它完整​​循环 26 次,第一个循环 13 次,其余循环 10 次。
    • 当它们相等时它会中断。这是slt,而不是sle。自己运行测试:gist.github.com/2572845
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2011-09-01
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多