没有64位乘法或除法指令的64位乘法/除法



我正在研究Forth实现,在该实现中我遇到了对双单元算术的需求(Forth实现是32位的(,包括双单元乘法和除法/余数。然而,我为之开发的架构ARM Cortex-M4缺乏64x64乘法或64/64除法/余数指令(它只有32x32乘法、32/32除法和32x32+64乘法/累加指令(。

虽然我可以用32x64乘法(因为64x64乘法可以用它来模拟,无论如何都不会溢出(,而且对于某些事情,64/32除法/余数就足够了,但我希望除了32x64乘法之外,至少还有一个完整的64/64除法/余项,这样我就可以完全实现双单元算术。

您可以以Wil Baden的bigmath.f库(或其他变体(——Double Number Arithmetic为例。

定义了CCD_ 1和CCD_。

关于许可证。我认为这个代码是公共领域的。它作为一个参考实现发表在Forth Dimensions1上,作者在那里说:";对于本文来源的副本,请发送电子邮件请求Stretching Forth#19:Double Number Arithmetic";。

对于DU/MOD这个词,威尔·巴登也注意到:;该算法基于Knuth在其《计算机编程艺术》第2卷中的算法,简化为两个单元被除数和两个单元除数;。

1Wil-Baden(1998(。拉伸标准Forth#19:双数算术第四维度XIX.1998年3月6日至4月,第33-34页

在第4页上,我们还可以阅读:

本期刊中包含的材料(但不是代码(的版权归文章的个人作者和Forth Interest Group,股份有限公司所有。,[…]然而,任何带有版权声明的代码只有在版权持有人的许可下才能使用。

代码和文章似乎都没有任何版权声明。

最新更新