我正在组装一个程序,它将两个64位字加在一起 我正在使用32位系统。据我所知,32位系统每个字只能容纳32位。有人可以解释一下我可以为64位空间做些什么吗? 谢谢!
答案 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指令是否修改/设置进位标志,然后查看你是否有带进位指令的添加,安排那些进位指令正确的顺序,以获得正确的结果。