如何在MIPS中乘以两个数字,产生大于32位的产品?

问题描述 投票:0回答:1

实际上,我的任务是在MIPS中乘以两个32位的数字,然后生成64位的输出。根据我的理解,最低有效32位将保存在'lo'寄存器中,其余为'hi'寄存器。

当我乘以100000和200000时,我在'lo'寄存器中获得a817c800,在'hi'寄存器中获得4

mult $t1, $t2 
    mflo $s0
    mfhi $s1 

enter image description here

assembly mips qtspim
1个回答
1
投票

当我乘以100000和200000时,我在'lo'寄存器中获得a817c800,在'hi'寄存器中获得4

正确。

因为结果是64位宽并且您使用的是32位MIPS CPU,所以需要两个寄存器来存储结果。

在您的代码中,高32位在s1中,低32位在s0中。因此,两个寄存器s1s0代表64位值4a817c800(十六进制),即20000000000(十进制)。这是正确的结果。

您的下一个问题可能是如何使用qtspim打印出64位数字。不幸的是,我没有MIPS模拟器的经验(只有真正的MIPS CPU),所以我不知道这是否可行。

© www.soinside.com 2019 - 2024. All rights reserved.