LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 857|回复: 6

-march 具体做了哪些工作?

[复制链接]
发表于 2006-7-19 22:08:55 | 显示全部楼层 |阅读模式
我手头有个 cyrix (是这么写吧?)486机器,我装 Mandrake 8。2(好象是这个版本) 也能顺利使用,它的包全是 -march=i586 。安装的时候除了 rpm --ignorearch 没什么其他问题,内核用的自己编译的。
那么 -march 到底是做了哪些工作?
这个问题发在这个版不算偏题吧 :-)
发表于 2006-7-19 22:55:33 | 显示全部楼层
gcc手册的解释:
-march=cpu-type
    Generate instructions for the machine type cpu-type. The choices for cpu-type are the same as for -mtune. Moreover, specifying -march=cpu-type implies -mtune=cpu-type.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-19 23:02:14 | 显示全部楼层
幻想大哥,别拿我开涮了,我就是不理解那句话的含义,哎。给我一个程序片段理解可否?
回复 支持 反对

使用道具 举报

发表于 2006-7-19 23:08:16 | 显示全部楼层
我的理解就是,根据不同的CPU的指令集,来优化生成的二进制文件。
至于怎么来证明,你试试用i686的包,看看能否运行,最好是选那些复杂一些的,保证用到了那些高级指令的。嘿嘿。:)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-21 14:08:10 | 显示全部楼层
中午试验了一个小程序,没什么特殊应用。用 -march 产生出来的汇编后文件,只有 i386 和其他的文件有所不同。i486 以上都是一样。但是小弟原来在校上汇编课的时候天天逃课 - -||,不明白有什么不一样……而且我那个小程序太普通反映不了问题。
哪位有心人能给个能说明问题的程序代码让我看看,谢谢啊
回复 支持 反对

使用道具 举报

发表于 2006-7-22 07:09:14 | 显示全部楼层
咱们以前有个这样的讨论,你看一看

http://www.linuxsir.cn/bbs/showthread.php?t=250209

记得从头到尾看完啊:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-22 19:57:26 | 显示全部楼层
谢谢回复 :-) 我越看越糊涂了,呵呵。其实我也知道为什么糊涂,说白了就是小弟计算机原理和汇编知识太贫乏。原来看了 -march 的介绍想当然以为这是优化的必备参数之一,没想到自己实验的几个其实都没什么区别。没有反映问题的代码干想恐怕也想不出来,回去继续实验吧 :-) 。有时间也该看看书了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表