-mfloat-abi=softfp -mfloat-abi=hard 这两个参数都用来产生硬浮点指令,至于产生哪里类型的硬浮点指令,需要由-mfpu=xxx参数来指令。这两个参数不同的地方是: -mfloat-abi=softfp生成的代码采用兼容软浮点调用接口(即使用-mfloat-abi=soft时的调用接口),这样带来的好处是:兼 容性和灵活性。库可以采用-mfloat-abi=soft编译,而关键的应用程序可以采用-mfloat-abi=softfp来编译。特别是在库由第 三方发布的情况下。 -mfloat-abi=hard生成的代码采用硬浮点(FPU)调用接口。这样要求所有库和应用程序必须采用这同一个参数来编译,否则连接时会出现接口不兼容错误。
這是一體兩面的,多了靈活相對Code size一定比較大,而現在的MPU甚至MCU都集成FPU了
所以可以直接用-mfloat-abi=hard編譯即可,就不需要去在意靈活性問題
以上
研究的好深入啊。
如果是硬件浮点的动态链接库,按道理是支持硬件浮点的。
但是我也没有试过。
首先,是支持硬件浮点的
原理是这样的,硬件的浮点运算实际上也是一团电路,这电路有对应的软件驱动去调用他们,而这些软件指令需要通过链接到你的代码才能工作,这就是你这边链接的硬件的浮点库。
所以也就是说,在默认是软浮点的情况下,只有你显式调用链接命令才会采用浮点的硬件电路工作