动机
这学期上了 compiler 的课程,但学校教的东西都比较偏理论,所以最近想要看看真正的 compiler 是怎么写出来的,于是找了一些专案来读读看。
看了几个专案的心得
1. gcc:
说到 compiler 第一个让人想到的就是 gcc 了,所以一开始就尝试 trace gcc,但后来发现因为这个专案包含了许多语言的 compiler,所以一开始光是看整体的架构就有些吃力了,于是放弃继续读 gcc。
2. tcc 以及 lcc:
我的感觉差不多,比 gcc 容易读的许多,但还是没有很容易读(因为笔者能力不足呜呜),我会有点难以把学校教的东西对应到程式码当中。
3. c4:
超级精简的 compiler,总共只有 4 个 function,但反而精简到不太清楚哪些程式码在做些什么(笔者也太挑XD)有种把 parser, codegen, vm, 都混杂在一起的感觉,不过确实写的很简化又很帅。
4. chibic:
笔者觉得最适合自己的专案,功能完整却又不会太複杂,以 cc1() 这个 function 来说明,里面就可以看到 scanner(tokenizer), parser, codegen 这几个上课题过的步骤分别呼叫了哪些 function 来完成,比较能够与学过的理论做连结。
结论
有时候看不懂的专案还是放弃继续研究、寻找更适合自己的比较好XD,之后打算参考 chibic 的架构来写出一个功能勉强堪用的 C compiler。