Сумма двух 64-битных целых чисел без знака QtSpim

Предположим, что регистры $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. 

Не уверен, как бы я подошел к этой проблеме, любая помощь будет высоко оценена.


person 3rdeye7    schedule 13.11.2015    source источник


Ответы (1)


Я бы добавил попарно наименее значащие слова и наиболее значащие слова каждого числа, затем «вычислил» половинный перенос и увеличил самое значимое слово суммы, если перенос произошел.

Чтобы «вычислить» половинный перенос, я бы сравнил наименее значимое слово суммы с каждым операндом. Поскольку вы вычисляете сложение без знака, у вас есть половинный перенос, если сумма меньше любого операнда.

Что-то вроде этого:

  addu $v0, $a2, $a0
  addu $v1, $a3, $a1
  bgt $a0, $v0, carry  
  ble $a2, $v0, done
carry:
  addiu  $v1, $v1, 1
done:  
person gusbro    schedule 13.11.2015