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。
我们的教授对不同的结果做出了让步,但我认为这可能对将来的某人有用。
我正在尝试将大约 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。
我们的教授对不同的结果做出了让步,但我认为这可能对将来的某人有用。