MIPS BNE机器代码转换

时间:2016-03-17 18:03:52

标签: assembly mips machine-code mars-simulator

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

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

我理解这是I格式,指令是BNE,目标寄存器为$17,来源为$0,但是直接/地址是我很困惑的关于。

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

由于

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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