这是(AFAIK)这个一般主题中的一个具体问题.
情况如下:
我有一个基于32位RISC微控制器(NEC V810的变体)的嵌入式系统(视频游戏控制台).我想写一个定点数学库.我读过这篇文章,但随附的源代码是用386汇编编写的,所以它既不能直接使用也不能轻易修改.
V810有内置的整数乘法/除法,但我想使用上面文章中提到的18.14格式.这需要将64位int除以32位int,而V810仅执行(有符号或无符号)32位/ 32位除法(产生32位商和32位余数).
所以,我的问题是:如何使用32位/ 32位模拟64位/ 32位除法(以允许红移的预移位)?或者,从另一种方式来看问题,使用标准的32位算术/逻辑运算将18.14定点除以另一种定义的最佳方法是什么?("最好"意味着最快,最小或两者兼而有之).
代数,(V810)汇编和伪代码都很好.我将从C调用代码.
提前致谢!
编辑:不知怎的,我错过了这个问题 ...但是,它仍然需要一些修改才能超级高效(它必须比v810提供的浮点div快,尽管它可能已经......),因此,我可以随意为我工作,以换取声望点;)(当然,我的图书馆文档中也有用).