本节书摘来自华章出版社《深入分析GCC 》一书中的第1章,第1.3节,作者 王亚刚 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.3 GCC代码分析
GCC作为目前GNU项目中应用最广泛的工具软件之一,是工程师设计编译系统最典型、最成功的范例,是高校学生学习编译系统最生动、最权威的设计实例,同时也是程序员进行高质量代码设计的有益参考。本书以GCC 4.4.0的源代码为例,对GCC的设计和实现进行分析和解读,主要涉及以下内容:
(1)GCC的发展历史及特点;
(2)GCC的总体结构;
(3)GCC中各种中间表示(包括抽象语法树、GIMPLE、寄存器传输语言)的生成技术;
(4)GCC中基于GIMPLE的优化处理,这一部分主要实现一些与目标机器无关的性能优化;
(5)GCC中基于RTL的优化处理,这一部分主要实现一些与目标机器相关的性能优化;
(6)GCC的移植技术,即如何让GCC支持新的目标机器。
本书将紧密围绕编译系统中的中间表示(IR,Intermediate Representation)这一核心概念,重点介绍GCC中的三种中间表示:抽象语法树(AST,Abstract Syntax Tree)、GIMPLE和寄存器传输语言(RTL,Register Transfer Language),对其基本概念、存储结构及其生成过程等进行深入分析。由于GCC基于GIMPLE和RTL的优化处理数量非常多,每种优化处理都涉及一个比较独立的优化问题,很难在本书中一一详述,因此,本书只简单地介绍了GCC中基于GIMPLE及RTL的优化处理的基本组织方式,并对其中一些非常典型的优化处理进行了简介。最后,本书也给出了将GCC成功移植到西安邮电大学自主研发的阵列处理器上的一个实例。
限于篇幅,书中的大部分代码只给出了简化版本,读者在分析时需要结合源代码仔细研读。