在没有浮点数单元的处理器上,如低端8位微控制器,如何执行浮点数运算?
请看这篇文章:http://www.edwardrosten.com/code/fp_template.html
(来自该文章)
首先,您需要考虑如何在内存中表示浮点数:
struct this_is_a_floating_point_number
{
static const unsigned int mant = ???;
static const int expo = ???;
static const bool posi = ???;
};
简短的回答是“慢慢地”。专门的硬件可以非常快速地执行提取未必以字节对齐的位组等任务。软件可以做到专门硬件所能做到的一切,但往往需要更长的时间来完成。
请阅读http://www.worldofspectrum.org/documentation.html中的“完整 Spectrum ROM 反汇编”以查看在8位Z80处理器上进行浮点运算的示例。
对于像正弦函数这样的东西,您需要预先计算一些值,然后使用Chebyshev多项式进行插值。