问题描述
干杯,给出以下 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 的汇编器然后选择使偏移量相对于分支本身(即零)。