我正在尝试将大约25行MIPS程序从机器代码转换为指令。
当我转换0x1620fff9
的机器代码时,会产生以下结果:
000101 10001 00000 1111 1111 1111 1001
我理解这是I格式,指令是BNE
,目标寄存器为$17
,来源为$0
,但是直接/地址是我很困惑的关于。
由于1111 1111 1111 1001
是带符号的数字,其两位补码会产生-7
的结果。我只是不知道如何处理这个结果。 MARS模拟器需要一个标签来指示它应该分支到哪里,但我不知道该怎么做。我转换的程序只有主要功能和打印功能。
由于
答案 0 :(得分:1)
事实证明,MARS和QTSpim以不同的方式处理这些指令:
MARS总是从分支指令后的指令跳转,这正是流水线机器应该做的事情;
QtSPIM从分支指令跳转,这更容易理解。
在MARS下,bne指令为0x1620fff8,而在QtSPIM下,则为0x1620fff9。
我们的教授为不同的结果作出了让步,但我认为这可能对将来的某些人有用。