《深入分析GCC 》——1.3 GCC代码分析

简介:

本节书摘来自华章出版社《深入分析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成功移植到西安邮电大学自主研发的阵列处理器上的一个实例。
限于篇幅,书中的大部分代码只给出了简化版本,读者在分析时需要结合源代码仔细研读。

相关文章
|
4月前
|
NoSQL 编译器 开发工具
006.gcc编译器
gcc是什么?
47 0
006.gcc编译器
|
5月前
|
存储 NoSQL 算法
从一个crash问题展开,探索gcc编译优化细节
问题分析的过程也正是技术成长之路,本文以一个gcc编译优化引发的crash为切入点,逐步展开对编译器优化细节的探索之路,在分析过程中打开了新世界的大门……
437 1
|
1天前
|
C语言
gcc的简易用法
【5月更文挑战第10天】gcc的简易用法。
14 8
|
26天前
|
C语言
转载 - gcc/ld 动态连接库和静态连接库使用方法
本文介绍了如何在GCC中实现部分程序静态链接、部分动态链接。使用`-Wl`标志传递链接器参数,`-Bstatic`强制链接静态库,`-Bdynamic`强制链接动态库。
37 0
|
2月前
|
编译器 C语言 C++
列举gcc 常见和有用的编译警告选项
列举gcc 常见和有用的编译警告选项
14 0
|
2月前
|
编译器 C语言
gcc编译警告:warning: suggest parentheses around assignment used as truth value
gcc编译警告:warning: suggest parentheses around assignment used as truth value
27 0
|
2月前
|
编译器 Linux C语言
gcc编译器的使用方法
gcc编译器的使用方法
23 1
|
3月前
|
编译器 C语言
gcc/g++语法
gcc/g++语法
|
5月前
|
C语言
gcc静态编译/usr/bin/ld: cannot find -lc
gcc静态编译/usr/bin/ld: cannot find -lc
|
6月前
|
编译器 程序员 C语言
gcc的编译过程和gcc与g++的区别
gcc的编译过程和gcc与g++的区别
55 0