MIPS BNE 机器代码转换

MIPS BNE Machine Code Conversion

我正在尝试将大约 25 行 MIPS 程序从机器代码转换为指令。

当我转换 0x1620fff9 的机器代码时,它会产生以下结果: 000101 10001 00000 1111 1111 1111 1001

我知道这是 I 格式,指令是 BNE,目标寄存器是 </code>,源寄存器是 <code>[=14=],但是 immediate/address 是我很困惑。

由于 1111 1111 1111 1001 是有符号数,其二进制补码结果为 -7。我只是不知道如何处理这个结果。 MARS 模拟器需要一个标签来指示它应该分支到哪里,但我不清楚该怎么做。我正在转换的程序只有一个主要功能和一个打印功能。

谢谢

事实证明,MARS 和 QTSpim 处理这些指令的方式不同:

  • MARS总是从分支指令之后的指令跳转,这正是流水线机器应该做的;

  • QtSPIM从分支指令跳转,更容易理解

  • MARS下bne指令为0x1620fff8,QtSPIM下为0x1620fff9。

我们的教授对不同的结果做出了让步,但我认为这可能对将来的某人有用。