0

假设寄存器 $a1 和 $a0 包含一个 64 位无符号整数

A = $a1 × 2^32 + $a0

并且寄存器 $a3 和 $a2 包含一个 64 位无符号整数

B = $a3 × 2^32 + $a2.

我将如何计算 A 和 B 的总和并将其存储在 $v1, $v0 这样

A + B = $v1×2^32 + $v0. 

不知道我将如何解决这个问题,任何帮助将不胜感激。

4

1 回答 1

1

我将成对添加每个数字的最不重要的单词和最重要的单词,然后“计算”半进位并在发生进位时增加总和中最重要的单词。

为了“计算”半进位,我会将总和中最不重要的单词与每个操作数进行比较。当您计算无符号加法时,如果总和低于任一操作数,则您有半进位。

像这样的东西:

  addu $v0, $a2, $a0
  addu $v1, $a3, $a1
  bgt $a0, $v0, carry  
  ble $a2, $v0, done
carry:
  addiu  $v1, $v1, 1
done:  
于 2015-11-13T17:09:27.077 回答