带溢出的MIPS乘法后跟减法

时间:2014-04-23 02:24:25

标签: mips

乘法结果存储在两个不同的寄存器中,分别为mips高电平和低电平。

例如:在这个例子中,为方便起见,我将高位和低位作为4位寄存器。

li $t0,12
mult $t0,$t0

12 * 12 = 144

1100 * 1100 = 1001 0000

所以高点有1001而低点有0000.现在如果我想从结果中减去12。我该怎么做?

我无法使用

mflo $t1
subi $t2,$t1,12

因为低有全零并且结果是错误的。在这种情况下如何执行减法。当两个数字是32位整数并且乘法导致溢出时。     2 ^ 30 * 2 ^ 4 - 14 使用高位寄存器。

1 个答案:

答案 0 :(得分:1)

MIPS寄存器是32位(或64位,但在这种情况下不会改变结果),因此在乘法后你将得到hi = 0x00000000和lo = 0x00000090。即8位产品适合32位lo就好了。

从0x90减去12后,您应该会看到t2 = 0x84