Re: [問題] 如何學寫COMPILER? [純拋磚引玉]

看板Programming作者時間18年前 (2007/04/17 03:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/38 (看更多)
※ 引述《horngsh.bbs@ptt.cc (要公理要正義)》之銘言: > 請教版上各位大大, 如果要實作一個C COMPILER該如何下手? 看你要做到什麼程度, 也就是說你要只是能產生 asm code 就好, 還是說要做各種最佳化, 前者非常簡單, 後者卻非常複雜而且跟硬體知識相關。 > 要看什麼書? 有SOURCE可看嗎? 還有LEX AND YACC好像也有關係? 1. Compilers: Principles, Techniques, and Tools (2nd Edition) 2. Crafting a Compiler with C 3. A Retargetable C Compiler: Design and Implementation 其中 1. 是 computer science 界眾人皆知的 compiler 聖經本, 在去年出第二版之前, 裡面大部分的章節都在講 parser, 最後面稍微提一下最佳化而已, 第二版以後還包含了各種近代的最佳化技術章節, 算是比較完整的課本, scanner 的部分有說怎麼用 lex 實作, 而 parser 的部分有說怎麼用 yacc 實作, 但我不建議你拿 lex/yacc 來寫任何非玩具類型的 compiler。 至於 2. 的話, 理論內容跟 1. 的第一版差不多 (用的 notation 有所差異), 但主要是以 C 實現。 而 3. 的話是在講一套很簡單、容易移植, 一個叫做 LCC (習慣小寫,這裡大寫是怕有人看成 ICC) 的 compiler, 它幾乎沒有什麼最佳化的功能, 而這本書主要就是在講解它的 source code, 這套 compiler 是以純 C 寫成。 理論部分: 1. > 2. > 3. 實務部分: 3. > 2. > 1. 你可以自己衡量看看, lex & yacc 非必學, commercial product 一般都不會用它, 工業強度等級的軟體程式碼更不會用它, 純粹就只是一個教學用具而已。 -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-229-51.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩
文章代碼(AID): #168yVl00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #168yVl00 (Programming)