实际上,我的任务是在MIPS中将两个32位数字相乘,然后生成64位的输出。据我了解,最低有效的32位将保存在“ lo”寄存器中,其余的将保存在“ hi”寄存器中。
当我将100000和200000相乘时,在“ lo”寄存器中得到a817c800,在“ hi”寄存器中得到4
mult $t1, $t2
mflo $s0
mfhi $s1
答案 0 :(得分:1)
当我将100000和200000相乘时,在“ lo”寄存器中得到a817c800,在“ hi”寄存器中得到4
正确。
由于结果为64位宽,并且您使用的是32位MIPS CPU,因此需要两个寄存器来存储结果。
在您的代码中,高32位在s1
中,低32位在s0
中。因此,两个寄存器s1
和s0
表示64位值4a817c800(十六进制),即20000000000(十进制)。这是正确的结果。
您的下一个问题可能是如何使用qtspim打印出64位数字。不幸的是,我没有使用MIPS模拟器的经验(仅使用真正的MIPS CPU),所以我完全不知道这是否可行。