乘法结果存储在两个不同的寄存器中,分别为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 使用高位寄存器。
答案 0 :(得分:1)
MIPS寄存器是32位(或64位,但在这种情况下不会改变结果),因此在乘法后你将得到hi = 0x00000000
和lo = 0x00000090
。即8位产品适合32位lo
就好了。
从0x90减去12后,您应该会看到t2 = 0x84