这是(AFAIK)this general topic中的一个特定问题。如何使用32位除法指令执行64位除法?
这里的情况:
我有一个基于32位RISC微控制器的嵌入式系统(视频游戏控制台)(NEC的V810的变体)。我想写一个定点数学库。我读this article,但随附的源代码是用386汇编编写的,所以它既不可直接使用也不易修改。
V810内置了整数乘法/除法,但我想使用上述文章中提到的18.14格式。这要求将一个64位整数除以一个32位整数,并且V810只做(有符号或无符号)32位/ 32位除法(产生一个32位商和一个32位余数)。
所以,我的问题是:如何模拟一个32位/ 32位的64位/ 32位除法(以允许预先移动除数)?或者,从另一个角度来看待问题,使用标准32位算术/逻辑运算来划分另一个18.14定点的最佳方法是什么? (“最好”意思是最快,最小或两者)。
代数,(V810)程序集和伪代码都很好。我会打电话给代码C.
在此先感谢!
编辑:不知何故我错过了this question ...但是,它仍然需要一些修改才能超级高效(它必须比v810提供的浮点格更快,尽管它可能已经是.. ),所以请随时为我做我的工作以换取名誉点;)(当然,在我的图书馆文档中还有信用)。
[32/16位除法处理器上的64/32位除法](https://stackoverflow.com/q/ 4771823/995714) – 2017-05-23 08:59:15