【发布时间】:2014-03-04 04:13:00
【问题描述】:
我已经为 mips 汇编语言实现了 beq 指令。根据我对 beq 指令 (beq $s, $t, i) 的理解,我可以采用整数值或十六进制值。我已经建立了 16 位整数值的界限。我想知道 16 位十六进制值的界限是什么,所以当 i 太大(或太小?)时,它会在执行之前输出错误。以下是二进制的 beq 指令。
Branch On Equal
beq $s, $t, i
0001 00ss ssst tttt iiii iiii iiii iiii
我尝试过 (i > 0xffff),但似乎并未涵盖所有情况。我应该在这里做什么?谢谢。
【问题讨论】:
-
“似乎没有涵盖所有情况”到底是什么意思?
-
它没有通过我教授的测试。我很确定它与那些 16 位十六进制的范围有关。
-
我不清楚你到底想做什么。您正在编写 MIPS 仿真器吗?还是 MIPS 汇编器?无论哪种方式,偏移量都是有符号的,因此范围是 -32768..+32767,然后在添加到 PC 之前将乘以 4。
-
Michael 的评论意味着 +/- 32k 字。零 = 无偏移 (= nop),0xffff = -1 = 1 个字向后(分支到自身),...