加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 没有FPU时浮点数会发生什么变化?

发布时间:2020-12-16 10:34:19 所属栏目:百科 来源:网络整理
导读:如果使用C语言编写没有FPU的微处理器,编译器会在遇到浮点文字和关键字(0.75,浮点数,双精度等)时发出错误信号? 此外,如果表达式的结果是小数,会发生什么? 我知道有一些软件库可供使用,因此你可以进行浮点数学运算,但我特别想知道如果你没有使用它会得到什么
如果使用C语言编写没有FPU的微处理器,编译器会在遇到浮点文字和关键字(0.75,浮点数,双精度等)时发出错误信号?

此外,如果表达式的结果是小数,会发生什么?

我知道有一些软件库可供使用,因此你可以进行浮点数学运算,但我特别想知道如果你没有使用它会得到什么结果.

谢谢.

解决方法

实现float和double类型以及涉及它们的算术表达式需要C实现.因此,如果编译器知道目标体系结构没有浮点运算,那么它必须引入一个软件库来完成它.允许编译器链接外部库,它也允许在软件中实现浮点操作本身作为内在函数,但它必须以某种方式生成代码才能完成它.

如果它没有这样做[*]那么它不是一个符合C的实现,所以严格来说你不是“使用C语言编程”.您可以使用编译器文档告诉您的任何内容进行编程.

您希望涉及float或double类型的代码将无法编译(因为编译器知道您处于不符合模式并告诉您)或者无法链接(因为编译器会发出对仿真例程的调用)库,但缺少图书馆).但就C而言,如果你使用不是C的东西,那么你就是你自己.

我不知道确切的细节(我看起来多大了?),但我想,如果你为x87编译了一些代码,那么你可能能够在使用x86的系统上链接和加载它没有FPU.然后当你试图执行它时,CPU会抱怨非法指令 – 很可能系统会根据你运行的操作系统而挂起.所以最糟糕的情况是非常糟糕的.

what happens if the result of an expression is fractional?

表达式的实际结果无关紧要,因为表达式本身要么用整数运算执行(在这种情况下结果不是小数),要么用浮点运算执行(在这种情况下,问题出现之前你甚至找不到结果).

[*]或者如果你没有指定选项让它这样做;-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读