不使用IEEE754浮点的C ++编译器/平台

时间:2013-12-11 08:11:14

标签: c++ floating-point ieee-754

我正在更新序列化库,以便以可移植的方式添加对浮点序列化的支持。理想情况下,我希望能够在不支持IEEE754的环境中测试代码。使用软浮动库进行测试是否足够?或者关于如何正确测试代码的任何其他建议?

3 个答案:

答案 0 :(得分:2)

您可以在ARM(嵌入式Linux)开发中找到的免费工具链,大多数不支持硬浮动操作,只支持软浮动。您可以尝试其中一个(即CodeSourcery),但您需要某种平台来运行已编译的代码(真正的HW或QEMU)。

或者如果您想在x86机器上执行相同操作,请查看:Using software floating point on x86 linux

答案 1 :(得分:0)

您的库是否应该在硬件浮点和软浮点都不可用的系统上工作?如果是这样,如果使用带有soft-float的编译器进行测试,则代码可能无法在这样的系统上编译/工作。

就个人而言,我会在没有软浮动的gcc编译器的ARM9系统上测试库。

答案 2 :(得分:0)

不是您实际问题的答案,而是描述您必须采取的措施来解决问题。

如果你想支持"不同的"浮点格式,你的代码必须理解浮点数的内部格式[除非你只支持"相同的架构两端"],选择浮点数分成你自己的格式[当然可能是IEEE -754,但要注意非正规,128位长双精度,NaN,INFINITY和其他"异常值",当然还有超出范围的数字],然后将它们重新组合成所需的格式。另一端。如果你不这样做,那么追求非IEEE-754系统是没有意义的,因为它不会起作用。

相关问题