首页 > 系统相关 >【linux】gcc编译选项:-fomit-frame-pointer,-fno-tree-vectorize,-fno-strict-aliasing以及ARM相关选项

【linux】gcc编译选项:-fomit-frame-pointer,-fno-tree-vectorize,-fno-strict-aliasing以及ARM相关选项

时间:2023-07-19 20:13:23浏览次数:44  
标签:选项 gcc name frame fno ARM

Date: 2018.9.8


1、参考

https://www.cnblogs.com/islandscape/p/3444122.html
https://blog.csdn.net/chdhust/article/details/8462414
https://gcc.gnu.org/onlinedocs/gcc-6.2.0/gcc.pdf

https://blog.csdn.net/u012927281/article/details/50999138
https://blog.csdn.net/softee/article/details/52241328
https://www.linuxidc.com/Linux/2013-03/81246.htm

2、gcc选项-fomit-frame-pointer

gcc文档中对该选项的解释如下:
Don’t keep the frame pointer in a register for functions that don’t need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions. It also makes debugging impossible on some machines.

On some machines, such as the VAX, this flag has no effect, because the standard calling sequence automatically handles the frame pointer and nothing is saved by pretending it doesn’t exist. The machine-description macro “FRAME_POINTER_REQUIRED” controls whether a target machine supports this flag.
解读:开启该选项,主要是用于去掉所有函数SFP(Stack Frame Pointer)的,即在函数调用时不保存栈帧指针SFP,代价是不能通过backtrace进行调试根据堆栈信息了。通过去掉SFP,可以提高程序运行速度,达到优化程序的目的。
另外一个类似选项-fomit-leaf-frame-pointer:用于去掉子函数leaf function的SFP。
该选项属于优化选项,在指定-O选项时,也会开启该选项。

3、gcc选项-fno-tree-vectorize

gcc -O3级优化已包括 “-ftree-vectorize” 选项对程序进行自动向量化,关闭向量化的选项是-fno-tree-vectorize。使用-ftree-vectorizer-verbose=n选项可以显示自动向量化的结果,其中n的取值范围为0到9。自动矢量化技术简单讲就是一次处理多个数据SIMD,比如x86 sse/mmx,arm neon技术。

更多解读可以参考:
https://stackoverflow.com/questions/35916358/tree-vectorization-gcc-optimization-flag
https://www.gnu.org/software/gcc/projects/tree-ssa/vectorization.html
https://monoinfinito.wordpress.com/series/vectorization-in-gcc/

4、gcc选项-fno-strict-aliasing

开启fstrict-aliasing选项,允许编译器对所编译的语言采用严格的别名规则。

5、ARM相关gcc选项

‘-m’选项是专门为ARM架构定义的。
常用选项如下:

-mabi=name: 产生特定ABI的代码,可用name为atpcs,aapcs,apcs-gnu等。
-mthumb-interwork: 产生支持在ARM和Thumb指令集之间调用的代码。
-mfloat-abi=name: 指定浮点型abi使用的类型,可用name为:soft,hard和softfp。
-march=name: 指定目标平台ARM架构名称,gcc通过这个名字来确定在生成汇编代码时使用的指令。比如armv7,armv7-1,armv8-a等。
-mtune=name: 指定了GCC调整代码性能的目标ARM处理器的名称,比如arm7,cortex-a7等。
-mcpu=name: 指定目标平台ARM处理器的名称。gcc可以通过该名称确定目标平台ARM架构(等效于-march)和用于调整性能的目标ARM处理器类型(等效于-mtune)。
-mfpu=name: 用于指定哪种浮点硬件在目标平台可用,比如vfp,neon,neon-vpfv4,neon-fp-armv8等

THE END!


本文为博主原创文章,未经博主允许不得转载。若允许转载,请注明来源https://www.cnblogs.com/SoaringLee/,否则保留追究法律责任的权利! 另外,本人提供付费咨询服务并长期承接各类毕设以及外包项目。联系QQ:2963033731。加Q备注:CNBLOG外包

标签:选项,gcc,name,frame,fno,ARM
From: https://www.cnblogs.com/lidabo/p/17566596.html

相关文章

  • (GCC) gcc编译选项 -Wl, -start-group,whole-archive,-Wl, Bstatic
    1.start-group编译选项假设程序x依赖三个静态库:libX1.a、libX2.a和libX3.a,而libX2.a又依赖libX1.a,libX3.a依赖libX2.a和libX1.a,正常情况下的CMakeLists.txt格式如下target_link_libraries(xlibX1.alibX2.alibX3.a)但也可以偷懒,不关心静态库的顺序问题,ld......
  • JQuery ComboBox 如何让数据重新加载并清空选项
    1、场景有两个下拉框,1个是产品类型 下拉框,1个是项目代码 下拉框项目类型下拉框的值需要根据产品类型下拉框,进行调整。这个时候,每次选中产品类型下拉框,项目代码下拉框的值,都要重新进行加载 2、如何进行重新加载$('#abc').combobox('loadData',intelProjCodeCombox......
  • shutdown 命令 新功能 加参数 重启进入BIOS 加参数 重启进入启动选项
    如上图,shutdown/r/fw注释:此命令,运行后,作用:重启进入BIOS......
  • 欧姆龙以太网选项板设置连接 Kepware opc步骤
    在数字化和自动化的今天,PLC在工业控制领域的作用日益重要。然而,PLC通讯口的有限资源成为了困扰工程师们的问题。为了解决这一问题,捷米特推出了JM-ETH-CP转以太网模块,让即插即用的以太网通讯成为可能,不仅有效利用了PLC的通讯资源,还提高了数据传输的效率和稳定性。  捷米特JM-......
  • centos7中yum安装gcc编译器11
     001、系统信息[root@PC1software]#cat/etc/system-releaseCentOSLinuxrelease7.6.1810(Core) 002、当前gcc编译器版本[root@PC1software]#gcc--versiongcc(GCC)4.8.520150623(RedHat4.8.5-36)Copyright(C)2015FreeSoftwareFoundation,Inc.T......
  • Pycharm安装CodeWhisper插件后登录仍然不显示“Pause Auto-Suggestions”选项的解决办
    一、检查PyCharm版本建议升级到最新,AWS不支持2022.03以前的版本。二、设置插件存储库FromtheJetBrainsmainmenu,openyour Preferences menu(expand File choose Settings,forWindowsusers).Fromthe Preferences/Settings menu,choose Plugins toope......
  • ElementUI——日期范围选择得快捷选项
    前言element-ui的日期范围的快捷选项;内容pickerOptions:{shortcuts:[{text:'今天',onClick(picker){constend=newDate()conststart=newDate()picker.$emit('pick',[start,end]......
  • centos7中根据gcc编译器安装包升级gcc编译器
     001、系统信息[root@PC1home]#lsb_release-aLSBVersion::core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarchDistributorID:......
  • python使用ctypes调用gcc编译的dll之下载mingw
    1、打开下载mingw的下载链接https://sourceforge.net/projects/mingw-w64/files/或者使用镜像网站下载http://files.1f0.de/mingw/2、根据自己电脑系统的版本下载相应64位或32位的mingw,红框中的包下载解压之后配置环境变量就可以使用了 3、将解压的mingw的路径添加环境变......
  • 用户角色选项
    1.说明:我们希望在添加用户的时候能够进行权限的选择2.后端接口3.前端定义它写方法导入进来钩子函数调用每一次表单选完之后置空数组4.测试数据已经查到了,但是一堆报错我们将复选框绑定到了这个变量里面,它是个数组,我们要提前定义它再来5.说明由于我们......