gcc的mtune和march选项分析

转载 2012年03月28日 17:59:55
给定gcc优化选项时经常要指定march和mtune。我以前都将它们赋为一样的值,例如pentium4.

今天仔细研究了一下它们的区别,原来还是有一些道道的。

首先是man gcc:

-mtune=name
      This option is very similar to the -mcpu= option, except that
      instead of specifying the actual target processor type, and hence
      restricting which instructions can be used, it specifies that GCC
      should tune the performance of the code as if the target were of
      the type specified in this option, but still choosing the instruc-
      tions that it will generate based on the cpu specified by a -mcpu=
      option.

上面是gcc3.2的manpage,现在mcpu已经不用了,一般都用march。望文生义,march指定的是当前cpu的架构,而mtune是真正作用于某一型号cpu的选项。

根据链接:
http://gentoo-wiki.com/Safe_Cflags
的解释,march是“紧约束”,mtune是“松约束”。mtune可以提供后向兼容性,也就是mtune=pentium-mmx编译出来的程序,在pentium4处理器上也是可以运行的。

因此,像-march=i686 -mtune=pentium4这样的优化选项编译出来的程序,是为奔腾4处理器优化过的,但是在任何i686上都可以运行。

我猜,如果指定了-march=pentium3,那么在奔腾4处理器上程序是不能运行的。

上面是自己根据别人的文档整理出来的一些说法,具体是不是这么回事没有试验过。若有错误的地方,还请大虾指正:-)

相关文章推荐

g++中的-march与-mtune的意义与使用方法

Next: i386 and x86-64 Windows Options, Previous: HPPA Options, Up: Submodel Options 3....

gcc/g++编译优化选项(一)

在进行C++编译时,有时候因为没有进行编译优化而导致程序运行效率慢,因此在这里介绍了gcc/g++编译优化的选项...

ARM Cortex系列(A8/A9/A15/A7) NEON多媒体处理SIMD引擎优化

Cortex-A9的NEON多媒体处理器是基于ARMv7的SIMD(Single Instruction Multiple Data)和向量浮点VFPv3(Vector Floating-Point)...

gcc 版本与 -mtune=native

在 model name      : Intel(R) Core(TM) i3 CPU       M 380  @ 2.53GHz

gentoo的CFLEGS设置为-march=native到底优化了目标代码

安装Gentoo时,在编译内核这一步骤前,需要在make.conf文件中设置编译选项,如: CFLAGS=“-O2 -march=i686 -pipe” 其中-march选项就是就是指定目标架...

Error: no such instruction 问题处理(去掉march优化)

我的gcc从4.2升级到6.2之后编译程序就出现的如下错误: /tmp/ccI5xBw4.s:422: Error: no such instruction: `sarx %eax,%edx,%...

GCC的arm编译选项

原文链接:https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html Next: AVR Options, Previous: A...

如何查看arm-linux-gcc某个版本支持的-mcpu,-march可选值

alan@alan-virtual-machine:~/work/tools/arm-linux-gcc-4.4.3/bin$ ./arm-linux-gcc --target-help The f...
  • Alan0521
  • Alan0521
  • 2012年08月11日 23:18
  • 11147

Linux shell脚本中判断变量文件目录:权限、是否存在、空值、相等

#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数判断$myPath是否存在并且...

DM3730基于openglES的qt embedded配置步骤_20120502

参考网址: http://processors.wiki.ti.com/index.php/Building_Qt_with_OpenGL_ES_accelerated_by_SGX#Buildin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gcc的mtune和march选项分析
举报原因:
原因补充:

(最多只允许输入30个字)