在32位机器上添加64位

时间:2017-04-29 22:04:23

标签: assembly

我正在组装一个程序,它将两个64位字加在一起 我正在使用32位系统。据我所知,32位系统每个字只能容纳32位。有人可以解释一下我可以为64位空间做些什么吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

你没有空间;系统是32位。

您需要做的是添加每个值的低32位,处理任何进位,然后(使用该进位)添加高32位,将每个加法存储到您需要的任何位置的正确部分总

答案 1 :(得分:2)

你实际上已经知道如何在小学就读。

如果我有一个数字,我可以做像

这样的事情
 3
+5
===
 8

 4
+2
===
 6  

依此类推,但如果我想使用两列我需要随身携带

  1
  68
+ 13
=====
  81

但如果我的基本10处理器只能存储一个数字,那么我将不得不做8 + 3 = 1携带1.然后我需要添加6 + 1加上进位。 6 + 1 + 1 = 8因此一个寄存器具有另一个寄存器,其中8个结果是两个寄存器中的81。二进制使得它更容易,因为只有两个符号,所以你要么携带一个0或携带1到下一列。如果你有7列(7位寄存器)或77或32或其他什么都无所谓。

   x
  abcd
 +efgh
=======

我们可以把它分成

x
 cd
+gh
====

进位为x

然后

  x
 ab
+ef
====

完成它。如果在汇编语言和你的处理器有一个进位标志(有些不使用/产生标志,但没关系),那么你看看他们是否有一个带进位指令的添加。如果没有那么他们可能有一个跳转/分支,如果进行设置或清除指令。

所以看看你的指令集,看看是否有进位标志,然后查看你的add指令是否修改/设置进位标志,然后查看你是否有带进位指令的添加,安排那些进位指令正确的顺序,以获得正确的结果。