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