Linux 版 (精华区)

发信人: netiscpu (说不如做), 信区: Unix
标  题: Gcc的安装与使用 (6)
发信站: 紫 丁 香 (Sat May 16 20:59:47 1998), 转信


发信人: jacky (绞肉机), 信区: linux
标  题: Gcc的安装与使用6
发信站: 饮水思源站 (Fri May 15 16:42:16 1998) , 站内信件




从gcc 2.7.0到2.7.2的users应该注意到,使用时-O2会有一个bug存在.更糟糕的是,强度折
减(strength reduction)居然没有用(doesn't work)!要是你喜欢重新编译gcc的话,是有
那麽一个修正的版本(patch)可以更正这项错误;不然的话,一定要确定每次编译时都会加
上-fno-strength-reduce喔!

11/12/97译

4.2.1.1. 有个性的微处理器(Processor-specific)

有一些-m的旗号无法藉由各种等级的-O来打开,然而却是十分有用的.这之中最主要的是
-m386与-m486两种,用来告诉gcc该把正在编译的程式码视作专为386或是486机器所写
的.不论是用哪一种来编译程式码,都可以在彼此的机器上执行,-m486编译出来的码会比
较大,可是拿来在386的机器上跑也不会比较慢就是了.

目前尚无-mpentium或是-m586的旗号.Linus建议我们,可以用-m486 -malign-loops=2
-malign-jumps=2 -malign-functions=2,来得到最佳化的486程式码(486 code
optimizations),而这样做正好就可以避免alignment(Pentium并不需要)有过大的gaps发
生.
Michael Meissner说:

     我的第六感(hunch)告诉我, -mno-strength-reduce(嘿!我可不是在谈强度折
     减的bug啊,那已经是另外一个争论的战场了.)一样也可以在x86的机器上,产
     生较快的程式码,这是因为x86的机器对暂存器(register)有著不可磨灭的□渴
     在(and GCC's method of grouping registers into spill registers vs. other 
     registersdoesn't help either).传统上,强度折减的结果会使得编译器利用加法暂
     存器(additional registers)以加法运算(addition)来取代乘法运算
     (multiplication).而且,我也在怀疑(suspect)-fcaller-saves,可能也只是个漏洞
     (loss)也说不定. 

     而我的第七感则再度的告诉我, -fomit-frame-pointer可能会,也可能不会
     有任何的赚头.从这点来看,即意谓著有另一个暂存器可用来处理记忆体分配
     (allocation)的问题.另方面,若纯粹从x86的机器在转换(encodes)它的指令集
     (instruction set)成为机器码的方法上来看,便意谓著堆叠(stack)所用到的记忆
     体空间要比frame所用到的还要来的多;换句话说,Icache对程式码而言并没有
     实质上的益处.若是阁下用了-fomit-frame-pointer的话,同时,也就是告诉
     编译器在每次呼叫函数(calls)之後,就必须修正堆叠的指标(stack pointer);然而,
     就frame来讲,若呼叫的次数不多的话,则允许堆叠暂时堆积(accumulate)起来. 

有关这方面主题的最後一段话仍是来自於Linus:

--
m;32m※ 来源:·饮水思源站 bbs.sjtu.edu.cn·[FROM: 202.112.26.100]m


--

                              Enjoy Linux!
                          -----It's FREE!-----

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.349毫秒