64位算术,16位字长(4字存储64位)

时间:2013-03-29 18:58:44

标签: math assembly

我目前正在为16位自定义微处理器编写软件。我需要能够处理大于16位的数字。指令集非常有限,但是左移,右移,AND,OR和NOT。我该如何实现这种算术?

1 个答案:

答案 0 :(得分:2)

对于加法和减法,确实可以将溢出从一个单词带到另一个单词。对于乘法,http://en.wikipedia.org/wiki/Binary_multiplier中描述的技术是一个相当容易实现的技术,并且优于串行加法。一般来说,分工比较复杂,但一个好的起点是http://en.wikipedia.org/wiki/Division_algorithm#Integer_division_.28unsigned.29_with_remainder

该除法算法实际上只是一个整数“长除法”。速度不是很快,但准确无误。这篇文章有更多涉及的方法,但它们......嗯,更多参与。可能会轻松搞定,然后看看你是否需要优化它。

另请查看http://en.wikipedia.org/wiki/Multiplication_algorithm。并且http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/在x86处理器上有关于多字算术的一些很好的信息,其中大部分应该适用于其他CPU。

自从我玩这个东西以来已经太久了。在Z80上完成了32位算术(很多年前),我知道你在这里遇到了什么。