作者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://www.ptt.cc/bbs/CompilerDev/M.1592671973.A.0D9.html
推 mshockwave: jserv大大出現了 <(_ _)> 06/21 08:05
推 decheng: 老師推! 06/21 12:12
推 Matz: 哇 大神推推 06/25 17:50
推 ReposJob: 有神 06/28 03:12