我的处理器是一个没有FPU和整数运算的小型16位微控制器,只有16/16除法和32/16除法,它们都需要18个周期。目前,我正在使用非常慢的软件例程(〜7,500个周期)来执行64/32除法。有什么方法可以使用这些除法引擎来计算64/32除法吗?类似于我已经在使用16x16乘法器和加法器来计算32x32乘法的方式类似?我正在使用C,但是可以使用任何一般性的解释来说明如何实现……我希望目标是<200个周期(如果可能的话)。
请参阅多字分割的“ Hacker’s Delight”(第140-145页)。
基本概念(回溯至Knuth)是以65536为基数来考虑您的问题。然后,您将遇到一个4位数乘2位数的除法问题,其中2/1位数的除法是原语。
C代码在这里:https : //github.com/hcs0/Hackers- Delight/blob/master/divmnu.c.txt