首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GCC [用于ARM]强制不使用浮点数

GCC是GNU Compiler Collection的缩写,是一套由GNU开发的编程语言编译器集合。它支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada等。GCC被广泛应用于开发各种软件和系统,包括嵌入式系统、操作系统、服务器应用等。

在ARM架构中,GCC提供了一系列选项来控制浮点数的使用。其中,"-mfloat-abi"选项用于指定浮点数的ABI(Application Binary Interface),有三种可选的值:"soft"、"softfp"和"hard"。这些选项决定了浮点数的计算方式和寄存器的使用方式。

当使用"-mfloat-abi=soft"选项时,GCC会使用软件模拟的方式进行浮点数计算,不依赖硬件浮点数支持。这种方式的优势是可以在不支持硬件浮点数的设备上运行,但计算速度较慢。

当使用"-mfloat-abi=softfp"选项时,GCC会使用软件模拟的方式进行浮点数计算,但会尽可能地利用硬件浮点数寄存器进行计算,以提高计算速度。

当使用"-mfloat-abi=hard"选项时,GCC会直接使用硬件浮点数寄存器进行浮点数计算,以获得最高的计算速度。这种方式要求目标设备支持硬件浮点数。

对于ARM架构的开发者来说,选择合适的浮点数ABI选项可以根据目标设备的硬件支持和性能需求进行权衡。在选择时,可以考虑使用腾讯云的云服务器实例来进行开发和测试,例如腾讯云的云服务器CVM(Cloud Virtual Machine),详情请参考腾讯云云服务器产品介绍:https://cloud.tencent.com/product/cvm

总结:GCC是一套由GNU开发的编程语言编译器集合,支持多种编程语言。在ARM架构中,GCC提供了选项来控制浮点数的使用,包括"-mfloat-abi"选项用于指定浮点数的ABI。选择合适的浮点数ABI选项可以根据目标设备的硬件支持和性能需求进行权衡。腾讯云的云服务器CVM可以作为开发和测试的平台。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 推荐新项目使用 )

Kotlin 注解错误使用 V . 错误处理 导入库冲突 ( 与 androidx 冲突 ) I . 特别注意 : ButterKnife 已停止维护 ( 新项目禁止使用该框架 ) ---- 1 ....注解使用 : ① 组件定义 : 这里注意 , 只能使用下面的两种方式 , 其它方式会报错 ; @BindView(R.id.tv_1) lateinit var tv_1 : TextView @JvmField...Kotlin 代码的 Activity 中使用 ButterKnife 注解 : 注意只能使用下面的两种方式 ; package kim.hsl.kb import android.app.Activity...只能使用下面两种声明方式 : ① 使用 lateinit 修饰变量 , ② 使用 @JvmField 注解 ; @BindView(R.id.tv_1) lateinit var tv_1 : TextView...推荐用法 : 老版本应用 ( 没有使用 androidx ) 继续使用老版本的 ButterKnife , 新版本的应用就别用这个框架了 , 使用 JetPack 中的 视图 / 数据 绑定 ; ① 老项目

2.4K30
  • iPhone XS JavaScript性能飙升背后的秘密「建议收藏」

    ,但他们却在ARM JS编译器上花了大心思……并不是说他们的CPU令人印象深刻,只是在进行JS基准测试时,差异似乎被夸大了。...软件工程师Greg Parker指出,最新的ARM指令集ARMv8.3-A针对JavaScript做了性能改进: ARMv8.3添加了一个从浮点数到整型的转换指令,超出范围的值按照JavaScript...ARM确实发布了很多称为更新,也就是ARMv8.3-A,包括对JavaScript数据类型转换的改进: JavaScript的数字使用的是双精度浮点格式。...从双精度浮点数到整数的转换以及检查转换的数字是否真的是整数是很经常发生的。 ARMv8.3-A指令有助于将双精度浮点数转换为带符号的32位整数,以提高性能。...Anandtech的一份iPhone XS性能报告表明,新的内存子系统最有可能是JavaScript性能得到显著提升的原因: 内存子系统对403.gcc部分有效,对429.mcf、471.omnetpp

    67040

    【专业技术】C语言里面丰富多彩的浮点运算

    一、使用浮点库实现浮点运算(soft-float) 例如:我想实现两个浮点数相加,代码如下: ? 使用GNU ARM编译器翻译成的部分汇编代码如下: ?...LDFLAGS= -static -L\ #指定浮点库所在的路径 "C:\Program Files\yagarto\lib\gcc\arm-none-eabi\4.6.2" -lgcc...-mfloat-abi=value -mfloat-abi=soft 使用这个参数时,其将调用软浮点库(softfloat lib)来支持对浮点的运算,GCC编译器已经有这个库了,一般在libgcc里面...这时根本不会使用任何浮点指令,而是采用常用的指令来模拟浮点运算。 但使用ARM芯片不支持硬浮点时,可以考虑使用这个参数。...这样要求所有库和应用程序必须采用这同一个参数来编译,否则连接时会出现接口兼容错误。 我们对main.c文件使用硬件浮点重新编译: ? 翻译成的汇编代码如下: ?

    1.7K50

    Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试

    常见的交叉编译例子如下: 1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。...2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。...3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。.../arm-linux-gnueabihf-gcc -v可查看gcc版本。 在这里我们使用的是 gcc-linaro-arm-linux-gnueabihf-raspbian-x64 版本!...该例子仅测试交叉编译是否成功并简单测试了浮点数功能  新建一个文件夹hello,里面有两个文件hello.c 和 Makefile。

    1.4K32

    ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

    但是对于 IAR 还是建议这么用,个人感觉 IAR 在设计时,估计没考虑过让用户使用命令行模式来独立使用编译套件,因为其编译套件和其他好多东西都放在了一个目录中,不像ARM 将编译套件独立存放。...因此,其和 GCC 一样是一套命令行工具的集合,理论上可以将它集成到其他任何集成开发环境中,从而直接使用命令行。...基于 GCCARM 编译工具链提供商有 ARM、Codesourcery、Linaro 这三家,但其中使用最多还是 ARM 提供的 GCC 编译器。...arm-none-elf-gcc用于交叉编译 ARM MCU(32位)芯片,如 ARM7、ARM9、Cortex-M/R 芯片程序。...arm-eabi-gcc用于编译 ARM 架构的裸机系统,包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application aarch64-elf: 用于编译

    10.9K34

    《深入理解计算机系统》(CSAPP)读书笔记 —— 第三章 程序的机器级表示

    它们用来实现控制或数据流中的条件变化,比如说用来实现if和 while语句   一组向量寄存器可以存放个或多个整数或浮点数值 关于汇编中常用的寄存器建议看我整理的嵌入式软件开发面试知识点中的ARM部分...机器代码示例   假如我们有一个main.c文件,使用 gcc -0g -S main.c可以产生一个汇编文件。接着使用gcc -0g -c main.c就可以产生目标代码文件main.o。...使用条件传送也总是会提高代码的效率。例如,如果 then expr或者 else expr的求值需要大量的计算,那么当相对应的条件不满足时,这些工作就白费了。...6.将指针从一种类型强制转換成另一种类型,只改变它的类型,而不改变它的值。强制类型转换的一个效果是改变指针运算的伸缩。...X86-64浮点数是基于SSE或AVX的,包括传递过程参数和返回值的规则。在这里,我们讲解的是基于AVX2。在利用GCC进行编译时,加上-mavx2,GCC会生成AVX2代码。

    2.1K30

    GCCARM-LINUX-GCCARM-ELF-GCC浅析

    二、GCC内部结构: GCC内部结构主要由Binutils、gcc-core、Glibc等软件包组成。 1. Binutils:它是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。...【它依赖于Binutils,可以参考安装GCC】 3. Glibc:包含了主要的c库,这个库提供了基本的例程,用于分配内存,搜索目录,读写文件,字符串处理等等。...例如,要使用交叉工具链为ARM机器编译简单的Hello World程序,你可以运行如下所示的命令: 使用如下命令编译并测试这个代码: $ arm-linux-gcc -o hello hello.c 五...好了,卖关子了,入正题,因为我们知道X86跟ARM使用的指令集是不一样的,所以所需要的binutils肯定不一样咯;上面提到过gcc-core是依赖于binutils的,自然ARM跟X86所使用gcc-core...arm-linux-gcc使用GNU的Glibc,而arm-elf-gcc一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统的开发的C库newlib。

    6.7K10

    imx6ull配置交叉编译环境编译u-boot及linux所遇问题解决记录

    一、问题 1 及解决方法 1、问题 1 描述 我在配置交叉编译环境时,所需要的编译器是 arm-linux-gnueabihf-gcc,且 arm-linux-gnueabihf-gccarm-linux-gnueabihf-gcc...-4.9.1 的软连接,也可以看到在 bin 目录下存在此编译器: 但是当我输入 arm-linux-gnueabihf-gcc -v 查看编译器版本时,出现 bash: arm-linux-gnueabihf-gcc...file arm-linux-gnueabihf-gcc-4.9.1 从文件信息来看,arm-linux-gnueabihf-gcc-4.9.1 是一个为 Intel 80386 架构(即x86架构...问题在于试图在一个兼容的系统上运行它,因为我目前系统是 64-bit 或非 x86 架构。...lzop 是一种使用 LZO 压缩算法的压缩工具,它常用于 Linux 内核的压缩过程。

    26210

    Cubieboard2开发要点简记

    Cubieboard2应有较好性能运行arm-linux-gcc,可以尝试安装。...这里的编译链应该是x86的,我的目标是在Cubieboard2上构建armarm的编译链,这个难度应该不高,取决于gcc和glib的版本。只要知道这两点都可以解决。...在下载完gcc以后,注意到的一点是它的前缀很奇怪:arm-linux-gnueabihf-,arm-linux-gnu为止都应该知道是什么意思,后几个缩写是指代什么呢?...带FPU的又分成两种,armel和armhf,分别用两种方式来完成硬件浮点数运算。armel是ARM EABI Little-endian的意思。它通过CPU的寄存器(整型的)来完成参数传递。...上机以后发现,直接用Timer产生PPM波会有10+us的误差因而导致整个想法崩盘,最后使用的方式是MSP430+ARM GPIO控制的方式实现NAZA飞控控制。

    53320

    测试现代化硬件C++浮点数性能和一致性

    然后,有些平台有编译选项或者运行时库来设置硬件的浮点数控制字,可以用于统一浮点数运算器的行为。...而且非常令人沮丧的是,GCC和Clang的数学库都使用了SSE指令,SSE2指令的控制字由单独的寄存器 MXCSR 控制。另外在ARM架构中,没有浮点数的精度控制字,只能设置Round规则。...默认情况下,gcc会尝试使用寄存器缓存浮点数计算的中间结果,因为x86架构下浮点数寄存器是80bits的,这也可能导致精度差异。这个选项则是强制中间结果也刷入内存,以便对齐到 IEEE 754 。...但是这也排除我写的测试用例比较简单,有可能这在复杂的计算和涉及更复杂的编译优化的场景下才能触发。 浮点数性能 在现代化的硬件体系下,浮点数性能已经相当不错了。...,现在已经可以在游戏服务器中使用浮点数了。

    81130
    领券