我正在编写一个实用程序,将mips指令转换为十六进制(4字节)格式。使用ADD等指令一切正常。但是对于mthi和mtlo,我得到的输出与预期相比有所不同。我不确定mips的确切版本是什么。
这是我得到的:
mthi $t2 = 01400011
mthi $s0 = 02000011
mtlo $t8 = 03000013
mtlo $a3 = 00e00013
这是我得到的:
mthi $ t2
1010 00000 00000 00000 010001
有谁知道内部位是如何计算的以及mips的版本是什么?感谢。
答案 0 :(得分:1)
来自“参见MIPS运行”的信息,对于它涵盖的所有MIPS ISA(通过MIPS IV),MIPS32指令没有区别。
这是mfhi,mtlo,mfhi,mtlo的格式(包括mfhi / mflo用于比较和完整性)
bit: 31-26 25-21 20-16 15-11 10-6 5-0
mfhi rd 0 0 0 rd 0 16
mthi rs 0 rs 0 0 0 17
mflo rd 0 0 0 rd 0 18
mtlo rs 0 rs 0 0 0 19
所以mthi $ t2(注册#10)
mthi $t2 000000 01010 00000 00000 00000 01001
答案 1 :(得分:0)
MTHI rs的MIPS 32R2编码为二进制000000 sssss 000 0000 0000 0000 010001.
所以MTHI $t2
是二进制000000 01010 000 0000 0000 0000 010001