首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM 浮点运算详解(4)

ARM 浮点运算详解(4)

七:ARM浮点相关编译选项:
1。-mfloat-abi=name:
Specifies which floating-point ABI touse.指定浮点应用程序二进制接口
可选值:soft,softfp,hard
soft: 编译器将浮点操作编译成调用输出库....(没吃透,也许是调用编译器中的软浮点实现??)
softfp:编译器生成硬件浮点指令(汇编语句见附录1)。但继续使用软浮点调用规则。
hard:编译器生成硬件浮点指令(汇编语句见附录1)。使用FPU指定的调用规则。

2.
-mhard-floatEquivalent to-mfloat-abi=hard.
-msoft-floatEquivalent to-mfloat-abi=soft.
3.
-mfpu=name指定在此平台上,何种硬件浮点设备或者硬件浮点模拟器可用。
可用参数:fpa,fpe2,fpe3,maverick,vfp,vfpv3,vfpv3-fp16,vfpv3-d16,vfpv3-d16-fp16,vfpv3xd,vfpv3xd-fp16,neon,neon-fp16,vfpv4,vfpv4-d16,fpv4-sp-d16,neon-vfpv4
vfp:之前已经详细谈过。
neon:前面也谈过。但neon并不完全支持 IEEE754。


4.
-mfpe=number-mfp=number-mfpe=X -mfp=X 等同于-mfpu=fpeX 其中X为fpe后面的数字。为了与老版本GCC统一。



附录1 :VFP 指令


附录2:
      -mfpu=name
      -mfpe=number
      -mfp=number

          This specifies what floating point hardware (or hardware emulation)is available on the target.  Permissible namesare: fpa, fpe2, fpe3, maverick, vfp.  -mfp and-mfpe are synonyms for -mfpu=fpenumber, for compatibility witholder versions of GCC.



-mfloat-abi=name
          Specifies which ABI to use for floating pointvalues.  Permissible values are: soft, softfp andhard.
          soft and hard are equivalent to -msoft-float and -mhard-floatrespectively.  softfp allows the generation offloating point instructions, but still uses the soft-float callingconventions.
Sam不明白为什么 hard不能使用。只好使用softfp

附录3:
RVCT 简介:
ARM公司提供的一套编译器。RVCT(RealView CompilationTools)业内公认的能够支持所有ARM处理器,并提供最好的执行性能的编译器。
RVDS 4.0中使用的编译器即为RVCT. 优化程度让人惊讶。


附录4:
其它与浮点有关的编译选项:
-ffast-math:
-fno-signed-zeros:高版本GCC才有的优化选项。与浮点里面的 正负0有关。



附录5:GNU GCC, LD 官方文档:
www.gnu.org
点选 Documentation :http://www.gnu.org/doc/doc.html
点选 GNU manuals: http://www.gnu.org/manual/manual.html
从list中选中GCC. : http://www.gnu.org/software/gcc/
从中选中Documentation->Manual
此处就是GNU GCC 所有document.
http://gcc.gnu.org/onlinedocs/
Sam需要看得是: GCC 4.6.0 Manual
http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/


LD:
LD则在list中选择:Binutils(asbfd binutilsgprofld)
http://sourceware.org/binutils/docs/ld/



Hi3716C:

Sam在Hi3716C 平台通常使用如下选项:
-mcpu=cortex-a9
-mfpu=vfp
-mfloat-abi=softfp
-march=armv7
-fsigned-char

-mcpu:
指出目标代码运行于何种ARM processor(ARM处理器)
可用的name  有:arm2, arm250, arm3, arm6, arm60,arm600, arm610,arm620, arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi,arm70, arm700, arm700i, arm710, arm710c, arm7100, arm720,arm7500,arm7500fe, arm7tdmi, arm7tdmi-s, arm710t, arm720t, arm740t,strongarm, strongarm110, strongarm1100,strongarm1110, arm8, arm810,arm9, arm9e, arm920, arm920t, arm922t, arm946e-s, arm966e-s,arm968e-s, arm926ej-s,arm940t, arm9tdmi, arm10tdmi, arm1020t,arm1026ej-s, arm10e, arm1020e, arm1022e, arm1136j-s, arm1136jf-s,mpcore, mpcorenovfp, arm1156t2-s, arm1156t2f-s,arm1176jz-s, arm1176jzf-s, cortex-a5, cortex-a8, cortex-a9,cortex-a15,cortex-r4, cortex-r4f, cortex-m4, cortex-m3, cortex-m1,cortex-m0, xscale, iwmmxt, iwmmxt2, ep9312
继承事业,薪火相传
返回列表