在棘手的示例MIPS 程序集中对 MIPS 中分支的寻址相等

问题描述

干杯,给出以下 MIPS 汇编命令:loop: beq $s0,$s1,loop which 是 MIPS 中指令的低 16 位的值?当我将它放入 QtSpim 时,我看到低 16 位全为零,但这对我来说没有意义。我的想法是:

让指令就位,例如80000. beq 使用 PC 相对寻址。所以当它执行时PC也是80000。但它是根据NEXT指令计算步数的。所以我说:80000 = 80000 (PC) + 4(下一条指令)+ x(偏移量)*4。所以我得到 x = -1,这对我来说很有意义,但事实似乎并非如此。我在想什么?

解决方法

偏移量是相对于分支延迟槽中的指令。据推测,您已将 QtSPIM 配置为禁用延迟分支,这意味着没有分支延迟槽。显然,QtSPIM 的汇编器然后选择使偏移量相对于分支本身(即零)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...