分类:
2008-08-08 19:43:19
然上了一学期的编译原理,但是对于如何去实现一个真正的编译器仍然觉得困惑;
学习了一些好的优化算法或者自己有些好的想法,想在gcc上实践一下,但发现gcc
实在太大了,有点无从下手。
如果你曾经有过上面这些感受,也许可以尝试一下ucc。
ucc是一款遵从ANSI C89标准的编译器,大约15,000行C代码。目前支持x86平台上的
Linux和Windows系统,能正确编译自身并成功运行。它有下面一些特点:
1. 代码结构清晰直观,有比较详细的中文文档讲述它的实现
2. 使用三地址码作为中间码,构建了由基本块组成的控制流图,适合很多优化算法
3. 编译速度快。词法分析,语法分析和目标代码生成器都是手写的(其中的代码
生成器本想用burg这样的工具自动生成,但这样可能会给代码的理解带来难度,
最后手写了一个简单的代码生成器)
你可以从
下载到它的软件包,希望对大家学习编译器有所帮助。
考虑到部分人无法访问sf.net,我随手传上来了,又一份经典的编译学习代码,哈哈
下载地址:http://www.cppblog.com/Files/ngaut/ucc160.zip