历史上的今天
今天是:2024年10月24日(星期四)
2019年10月24日 | 软浮点 技术使用--GCC
2019-10-24 来源:eefocus
目前大多数主流CPU都支持浮点运算单元,或者具备浮点运算功能的辅助运算单元,比如PowerPC e500的SPE APU。在这样的机器上,浮点操作一般被编译成硬浮点指令,但是有的时候为了调试方便,或者由于fpu工作不正常而需要关闭硬浮点,就需要使用软浮点指令来模拟浮点操作。
在Linux下,一般有两种软浮点方式:
1。由kernel来模拟软浮点,应用程序仍然使用硬浮点来编译。在运行的时候,碰到浮点指令或者使用了浮点运算单元的CPU,硬件会产生相应的中断异常,kernel处理这个中断异常,然后根据指令内容进行软浮点操作,将结果保存好之后再恢复原来的执行。
这样的方式好处在于应用程序不需要重新编译,只需要在kernel中把浮点模拟的开关打开即可,所以使用起来非常方便。但是缺点也很明显,每次浮点操作都要触发中断异常,执行过程就要慢很多。另外在有些CPU上,并非所有的浮点指令都会触发中断异常,那么这些指令就没办法用这种方式进行模拟。
2。另一种方式是使用软浮点重新编译所有应用程序,这样可以避免上述问题,而且使用gcc的浮点模拟性能上也会好一些。但缺点是因为使用了不同的编译选项,使用的ABI可能就发生了变化,如果某个库或者应用没有使用同样的编译选项(ABI不同),系统运行时会出现意想不到的情况,甚至造成崩溃。
下一篇:ARM GCC浮点相关总结
史海拾趣
|
看起来,Platform Builder对于kernel image的生成过程中。 CEC文件除了描述item在catalog中的位置关系外,主要是使用环境环境变量来控制是否需要将相应的dll通过mkimage置入nk中。 而source和dir决定了那些东西会被编译。 也就是说,无论某些ite ...… 查看全部问答> |
|
芯片研发 和 驱动开发 哪个更有前/钱途? 如果想从事芯片研发方面的工作,应该怎么学? 如果想从事驱动开发方面的工作,又应该怎么学? … 查看全部问答> |
|
我想用F2812做一个音频信号采集、处理、回放系统 我想用F2812做一个音频信号采集、处理、回放系统。不知哪位大侠帮忙介绍一下外围电路和程序设计》 … 查看全部问答> |
|
花了点时间,写了一个STM32的入门系列教程,希望大家喜欢!该入门教程,从stm32的必备软件安装开始,一直到最后的编程上手,都给了详细的讲述,图文并茂。 … 查看全部问答> |




