从开始学习lcc的源码到现在已经有几个月过去了,一直想写点东西,关于lcc。
因为本人以前一直都是学芯片设计的,只是因为一些偶然的机会,才开始接触到编程。先学过一点perl,后来又由于一些原因,对编译器产生了一点兴趣,在导师的支持下七学八学地学了点关于编译的东西,又在对编译一知半解的情况下玩起了lcc,但终究还是懵懵懂懂。我的C语言还是好多年之前学过一点,数据结构也是如此,隐隐约约大概记得点树和链表,而软件工程之类的说法,则早就尘归尘土归土,全部还给老师了。
忘了是谁说过的,说是学好软件的一个比较好的途径是重复一个软件项目,一遍又一遍地进行梳理,正所谓“温故而知新”。又记得当初学数据结构时,老师曾经说过他们以前学习编程(主要是C语言),就是拿了unix的源代码一遍遍地学习,后来成就了不少牛人。我是没办法去温习unix源代码,不过既然看了几天lcc,那么多琢磨琢磨lcc的源码,我想对我自己也是有好处的。所以,我打算花上一点空余的时间,也来尝试写写lcc的源码分析。
我想我的lcc源码分析系列主要应该集中在对代码的实际解析上,更多的恐怕是尽可能详细地解释lcc的源码(目前我能做的也许就只是这么多了)。因为当初在看lcc源码时,虽然有本书《A retargetable C Compiler Design and Implementation》,但真正去看代码时,却发现还是很难看懂,当一个新手看到那些看起来很复杂的数据结构时,确实很头疼。所以我打算在源码分析里写下我的一些认识,一方面算是做个笔记,另一方面也是希望如果有其他人也在看lcc源码时,可以有更多的一些参考,这样我的工作也可以对别人产生一点意义,我也会感到很欣慰。