免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2490 | 回复: 1
打印 上一主题 下一主题

[其它] 请问Android系统(ARM架构)的数学库支持硬件浮点运算吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-03 16:21 |只看该作者 |倒序浏览
大家好,请教一个问题。我正在分析Android系统中的数学库libm。数学库可以通过两种方式实现:(1)CPU模拟,(2)硬件浮点运算单元。libm按照"CPU模拟"的方式编写了一套通用代码(C语言实现,与架构无关)。针对X86架构,libm中有一个目录i387,这个目录中按照"硬件浮点运算单元"的方式重写了部分函数,就是直接调用80387中的指令。但是针对ARM架构,libm没有采用"硬件运算单元"的方式进行重写。我对ARM架构不太熟悉,通过google查找早期的ARM芯片没有硬件浮点运算单元,但是后来的ARM芯片实现了硬件浮点运算单元。如果libm这样实现的话,是不是即使ARM芯片支持硬件浮点运算单元,但是Android系统中进行浮点运算时也是采用"CPU模拟"的方式?libm为什么不利用ARM中的硬件浮点运算单元对libm中的函数进行重写?而且,我还查看了glibc的代码,glibc也只针对X86架构的浮点运算函数进行了重写,ARM架构的浮点运算函数没有重写,为什么会这样呢?谢谢。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2013-10-03 11:38 |只看该作者
反汇编libm.so,然后看看里面有没有vldr vmov vstr之类的指令,如果有就说明是用的硬浮点,如果没有则说明是软浮点

另外硬浮点也分为softfp和hard两种,hard性能更好,但是考虑兼容性一般都用的softfp


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP