如果您为没有协处理器的系统编译,编译器会在软件中实现计算。例如,编译器选项-mfloat-abi=hard选择硬件 VFP 协处理器,该选项-mfloat-abi=soft指定算术运算将在软件中执行,而不使用任何协处理器指令。 2、armv8中的浮点型介绍 浮点寄存器组与 SIMD 寄存器使用相同的扩展寄存器,且是banked的。 在AArch32 状态下,...
在有fpu的情况下,就可以通过gcc的选项-mfloat-abi来指定使用哪种,有如下三种值: soft:不用fpu计算,即使有fpu浮点运算单元也不用。 armel:(arm eabi little endian)也即softfp,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。 armhf:(arm h...
arm-linux-gnueabihf-gcc -dumpspecs *asm: %{mbig-endian:-EB} %{mlittle-endian:-EL} %(asm_cpu_spec) %{mapcs-*:-mapcs-%*} %(subtarget_asm_float_spec) %{mthumb-interwork:-mthumb-interwork} %{mfloat-abi=*} %{mfpu=*} %(subtarget_extra_asm_spec) *asm_debug: %{%:debug-level-gt...
-mfloat-abi=softfp/hard 因为使用不同的参数传递方式,所以你不能将一个使用softfp另外一个使用hardfp的库或目标文件链接起来。 正式因为如此,在armv7的时候有些编译好的库(比如glibc使用softfp)没法在使用另一种(使用hardfp)的应用编译中。 有的工具链直接只支持一种方式比如arm-linux-gnueabi,和arm-linux-gnueabi...