硬浮点数和软浮点数有什么区别?

新手上路,请多包涵

当我用我的交叉工具链编译 C 代码时,链接器会打印出警告页面,说我的可执行文件使用硬浮点,但我的 libc 使用软浮点。有什么不同?

原文由 Evan Kroske 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 877
2 个回答

硬浮点使用片上浮点单元。软浮动在软件中模拟一个。区别在于速度。看到两者都用在同一个目标架构上很奇怪,因为芯片要么有一个 FPU,要么没有。您可以使用 -msoft-float 在 GCC 中启用软浮点。如果您使用它,您可能需要重新编译您的 libc 以使用硬件浮点。

原文由 nmichaels 发布,翻译遵循 CC BY-SA 2.5 许可协议

浮点运算的三种方法:

  • 如果您的 CPU 有 FPU,请使用浮点指令。 (快速地)
  • 让您的编译器将浮点运算转换为整数运算。 (减缓)
  • 使用浮点指令和没有 FPU 的 CPU。您的 CPU 将生成异常(保留指令、未实现指令或类似指令),如果您的操作系统内核包含浮点模拟器,它将模拟这些指令(最慢)。

原文由 ninjalj 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题