0

我正在研究 Frescale 的 iMX6quad Arm Cortex A9 CPU。操作系统是Linux。它的运行时库已经为 armv5 架构编译了 -mfloat-abi=softfp 我想运行一个我可以为 armv7-a 编译的应用程序,甚至在编译时启用硬浮点选项 (-mfloat-abi=hard)。

我应该期望应用程序在 ARM 上运行良好吗?显然,我不希望对运行时库的访问在“硬”软件中进行,但是我的代码部分可以在“硬”浮动的情况下正常工作吗?

也可能相反?也就是说,如果库是针对特定处理器编译的,并且可以使用所有硬件加速,我(然后)可以用 softfp ABI 编译一个简单的应用程序并期望它在 ARM 开发板上运行良好吗?

谢谢您的帮助

4

1 回答 1

1

正如其首字母缩写词所暗示的,ARM 浮点 ABI 是二进制接口。如果您有两个二进制文件,例如一个可执行文件和一个共享对象(动态库),它们需要具有相同的 ABI,否则它们将无法正常通信。

详细来说,二进制接口定义了函数期望如何传递其参数,它们需要保留哪些寄存器。

例如,hardsoftfpABI 之间的区别在于 softfp 函数期望它们的浮点参数在常规寄存器中,而在硬约定函数中,浮点参数期望在浮点寄存器中。

于 2013-02-28T20:11:17.443 回答