作者jserv (松鼠)
看板CompilerDev
标题Re: [问题] C4拿来入门适合吗?
时间Sun Jun 21 00:52:46 2020
※ 引述《Matz (void (*一资米)())》之铭言:
: 各位前辈大神好。
: 本鲁最近想自己写一个精简C语言的编译器。
: 看惹很多书,但都感觉有点拿以下手,中间卡住超多次。
: 最近看到C4 C in four function,程式码很少大概500多行而已。
: 想问C4拿来入门合适吗???
Robert Swierczek 最初撰写 C4 [1] 的动机,是提取 swieros [2] 里头的 C 语言
编译器程式码,成为「火力展示」专案。swieros 这专案从自行定义的虚拟 CPU 及
指令集开始,一路撰写组译器、C 语言编译器、开发工具程式、移植 MIT xv6 [3]
作业系统核心,甚至透过 para-virtualization 的手段,支援网路通讯和远端 OpenGL
存取 (!) —— 全部 swieros 原始程式码仅一万余行,但着实不好理解。北京清华
大学的陈渝教授 [4] 曾经跟我合作,尝试扩充 swieros 作为作业系统课程教材,但
我们奋斗一阵子後就放弃了,实在太难改了。
自 swieros 抽取出来的 c4 编译器 (更多的实作在於解译器) 支援更少的 C 语言
特徵,像是 struct 则付之阙如,而且程式码过於精简,阅读起来颇为困难。基於教学
目的,我和成大的学生合作扩充 c4 编译器,成为 AMaCC [5] (读音是「阿嬷 CC」,
既然淡水阿嬷可让朱立伦先生改变心意参选总统,我相信淡水阿嬷亦可鼓励广大的学子
勇於挑战编译器设计和开发),不仅支援更多 C 语言特徵,原始程式码也有进行补强,
甚至能够产生 ARM/Linux 的执行档和支援 JIT 编译 ——原始程式码控制在 1500 行。
关於 AMaCC 的导读可见:
https://hackmd.io/@sysprog/c-compiler-construction
搭配 Warren Toomey 整理的 A Compiler Writing Journey [6] 研读,效果更佳。
[1] C4:
https://github.com/rswier/c4
[2] swieros:
https://github.com/rswier/swieros
[3] xv6:
https://pdos.csail.mit.edu/6.828/2019/xv6.html
[4] 陈渝:
http://soft.cs.tsinghua.edu.cn/~chen/
[5] AMaCC:
https://github.com/jserv/amacc
[6] A Compiler Writing Journey:
https://github.com/DoctorWkt/acwj
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.246.163 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CompilerDev/M.1592671973.A.0D9.html
1F:推 mshockwave: jserv大大出现了 <(_ _)> 06/21 08:05
2F:推 decheng: 老师推! 06/21 12:12
3F:推 Matz: 哇 大神推推 06/25 17:50
4F:推 ReposJob: 有神 06/28 03:12