5258|8

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

内核态不能用float 类型? [复制链接]

问大家个问题:
-------------------------------

我是在板子上做嵌入式开发,处于内核态时:

float result = 5.4 / 4.3 ;                  // 有问题

简单得问了一下,有人说内核态不能用float类型,不知道到底对不对。

如果真的不能用浮点运算的话,那就不太明白了,像 5.0/2.5 = 2 这种除法很常见,在内核中怎么实现啊?

希望大家给相关回答,谢谢啦。


最新回复

哎,有点CPU处理浮点运算是通过中断处理,所以你在内核下最好不要用C语言提供的浮点操作符,而最好用内核函数中提供的运行时函数。在windows ddk中就有相应的运行时函数,估计linux内核也应该有的。  详情 回复 发表于 2008-10-15 13:53
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
看你用什么CPU?
如果是定点的,那么浮点运算只能转换为定点运算实现。
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
内核没有这种限制,你的CPU不支持吧?
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
至少在linux系统中确实不支持浮点运算。既然你知道了内核态不支持浮点运算,那么在进入内核态之前作一些处理不就解决了浮点运算的问题吗?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
跟内核态不内核态无关吧?如果平台不支持硬件浮点,你需要在编译的时候带上软浮点的参数,这样编译器碰到浮点运算的时候会编译成软浮点实现,实际就是将浮点运算用一大堆整数运算代替,效率肯定是比硬件浮点低了。用这个参数-msoft-float。上面的一切都是指gcc,如果用其他编译器,请查相关手册。
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

6
 
5.0/2.5 = 2
《==》
50/25 = 2
小数点另外存储即可。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
这个问题遇到过。哎
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
应该的编译器不支持,看看编译时有什么提示,一般换一个编译器就行。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
哎,有点CPU处理浮点运算是通过中断处理,所以你在内核下最好不要用C语言提供的浮点操作符,而最好用内核函数中提供的运行时函数。在windows ddk中就有相应的运行时函数,估计linux内核也应该有的。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表