GCC源代码阅读(三)

学习GCC源代码,离不开各种参考资料,如论文、wiki、手册和散落在邮件列表里面的讨论。

如果没有理论背景知识,想从GCC源代码里看出它想要做什么,以及在做什么,是很困难的。因此,学习GCC实现的过程,必然伴随着不断地阅读论文。如果注释里面提到了参考论文(或书籍)的名字,不妨直接找来看看。另外一个非常重要的内容就是gcc summit,论文下载地址为http://gcc.gnu.org/wiki#GCC_Summit_Proceedings,包括从2003年至今的所有论文。

gcc summit的论文不涉及太多的细节,所以看起来不像其它论文那么头疼,但是要学习具体的算法和实现,还是要找来相应的论文,啃硬骨头。论文看多了,如何管理也是个问题,不然看了等于白看,一会儿就还给作者了。尝试了两个网站CiteULikeConnotea,都不理想,似乎更像是社会化书签服务,对于我一地的PDF毫无帮助。最后还是用orgmode记录,以后再把RefTex集成进来

要了解GCC的实现细节,还要看手册,Ubuntu下的安装方式如下:

sudo apt-get install gcc-doc

其中包括两个手册——使用手册和内部实现手册,查看方式分别为:

info gcc
info gccint

手册不适合从头到尾看下来,需要的时候查找相应内容学习就可以了,最多粗读一遍获得大概的印象,依我的经验,基本就是看了后面忘了前面,反而是遇到问题再来查找更有针对性、更容易理解。由于gccint始终处于不完整状态,所以也不要期望太多,看代码是必不可少了。

手册的在线地址为http://gcc.gnu.org/onlinedocs/

最后的信息源就是gcc wiki邮件列表了,由于时效性的问题,上面的内容是否还适用,需要个人自行判断。邮件列表有多个,我个人关注的是gcc和gcc-patches,

2 thoughts on “GCC源代码阅读(三)

  1. 哈哈,又遇到一个热爱开源的人。幸会!
    我个人觉得,GCC的源码不适宜用来阅读,原因有二。
    1. 编码的过程涉及一些细节,并非某种特例的算法可以描述,这些细节大多是掺杂了作者的一些推理思路,如果不具备相应的经验,读懂是一件困难的事情。
    2. GCC编译器只是编译原理的化身,如果没有深厚的原理理解的功力,会在各做非常规的算法代码中迷失自我。
    读书时候我曾尝试阅读过Linux内核代码,花费三月,不得其门,最后得出一个结论,大型项目的代码不是用来阅读的。而是用来查阅的,与其花费时间在这上边,倒不如用心多练内功,想想设计模式,想想编译原理,想想算法。这些都是短小精悍却让人愉快的东西!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据