gcc 源码分析-序
2013-03-16 23:42
183 查看
市面上讲述编译原理的书籍比较多,但基本上都是以理论为主,即使谈到适用的技术,也都是泛泛而谈,我这里就开一个头,来探讨一下编译器的具体实现方式,我以大名鼎鼎的gcc编译器为基础,聊一聊它的具体实现。
gcc编译器版本比较多,最新的大概已到了4.7, 如果以最新的来分析,第一个问题,代码太多,看起来比较痛苦;第二,中间可能要夹杂太多的边缘东西,为了降低难度,我将以gcc1.40版为主。
要分析gcc的源码,首要条件就是要编译通过,但是这个代码年代已久,很难在现代的开发环境中编译通过。欣喜地是,通过我的艰苦努力,居然在vc6上编译通过了,这样为其分析代码创造了很好的条件。
大凡看到gcc代码的都知道,gcc的词法分析采用的手动方式,语法分析用的是bison工具。我在用vc6编译过程中并没有完全按照gcc1.40的代码方式,词法分析我尝试用flex工具来分析。其他部分基本上采用的gcc1.40的代码。
为什么用vc6编译,因为vc6调试跟踪非常方便,目前在windows上没有找到一款GUI调试跟踪能比vc6好用的,这为分析其代码提供了很好的条件。
这个工作我也刚刚开始,所以这个更新比较慢,什么时候能完,目前没有计划!
要看懂gcc代码,我将首先从flex,bison两个工具谈起!
下一节首先谈谈flex.
gcc编译器版本比较多,最新的大概已到了4.7, 如果以最新的来分析,第一个问题,代码太多,看起来比较痛苦;第二,中间可能要夹杂太多的边缘东西,为了降低难度,我将以gcc1.40版为主。
要分析gcc的源码,首要条件就是要编译通过,但是这个代码年代已久,很难在现代的开发环境中编译通过。欣喜地是,通过我的艰苦努力,居然在vc6上编译通过了,这样为其分析代码创造了很好的条件。
大凡看到gcc代码的都知道,gcc的词法分析采用的手动方式,语法分析用的是bison工具。我在用vc6编译过程中并没有完全按照gcc1.40的代码方式,词法分析我尝试用flex工具来分析。其他部分基本上采用的gcc1.40的代码。
为什么用vc6编译,因为vc6调试跟踪非常方便,目前在windows上没有找到一款GUI调试跟踪能比vc6好用的,这为分析其代码提供了很好的条件。
这个工作我也刚刚开始,所以这个更新比较慢,什么时候能完,目前没有计划!
要看懂gcc代码,我将首先从flex,bison两个工具谈起!
下一节首先谈谈flex.
相关文章推荐
- GCC源码分析(3):Tree-SSA优化框架
- gcc 源码分析-前端篇3
- boost::mpl::vector(GCC)源码分析
- GCC源码分析(2):从C代码到GIMPLE
- GCC源码分析(一)——介绍与安装
- GCC源码分析(二)——前端
- gcc 源码分析-前端篇2
- GCC Coverage代码分析-从GCC源码中抽取gcov/gcov-dump程序
- string源码分析 ——转载 http://blogs.360.cn/360cloud/2012/11/26/linux-gcc-stl-string-in-depth/
- GCC源码分析(二)——前端
- GCC源码分析(一)——介绍与安装
- GCC源码分析(5):自动向量化遍
- GCC源码分析(四)——优化
- GCC源码分析(三)——中间语言
- gcc 源码分析-前端篇1
- GCC源码分析(4): 树结点的类型
- GCC源码分析(五)——指令生成
- Linux内核源码分析(2)——compiler-gcc.h分析
- GCC源码分析(五)——指令生成
- gcc 源码分析1