CompilerDev 板


LINE

應版友要求 來列個簡單的新手指南和書單好了 首先我個人非常不推 Dragon Book,原因在於他花太多時間在講 Lex/Parse 了 而且也非常多章節都過時了 用字遣詞方面也顯得過於學究不好懂 (Lex/Parse是必須學 但由於現代程式語言不像C/C++,基本上用top-down parser就可以 解決 而top-down parser老實講不需要什麼domain knowledge 所以在學習的過程 個人認為不要花太多時間在 Lex/Parse上) Engineering a Compiler 個人認為這本書算是比較平衡 也能夠陪伴你比較久的新手教科書: https://www.amazon.com/Engineering-Compiler-Keith-Cooper/dp/012088478X Building an Optimizing Compiler 上面那本書的後半章節已經有涵蓋 IR 以及 backend,如果您想在 IR optimization (通常我都會稱為"middle-end")方面有更深入了解的話 有一本不錯的入門書: https://tinyurl.com/ybvs54mr 這本書還蠻薄的 程度的話大概只比 Engineering a Compiler 深一些些 算是一本 很不錯的銜接用書 閱讀原始碼 很可惜,就小弟所知 再接下去就沒有「普通」書可以讀了 我個人在這之後就是閱讀 大量的原始碼和paper。其中原始碼特別有幫助 不僅你可以知道怎麼實作 也可以深切 感受到學術與產業界在實務需求的差別 例如:在提到 pointer/alias analysis的時候 文獻一定會提到 Anderson/Steengaards 的演算法,但在LLVM裡面....兩者預設 都沒開啟XDD 最大的原因在於最普通、依靠一堆手寫規則/heuristic的 alias analysis 就已經「夠好了」,用前述的兩個演算法不僅花時間 成果也不見得比較好 至於要挑選GCC還是LLVM來閱讀,由於我還真的完全沒讀過GCC的原始碼(掩面 就不方便比較兩者的優缺點。如果就單講LLVM的話,因為他用的是 modern C++ (C++14)來開發,而且都有把最新的 feature 發揮得淋漓盡致,也將抽象的idea用物件 包裝起來,所以個人認為比較容易理解。除此之外 也是個學習良好C++ programming 習慣的優良範本。但您大概也知道 LLVM專案的規模以接近指數倍的速度增長 如果第一次看到大概感覺像是迷宮一樣,因此改天我會寫個簡單的原始碼研讀指南 系統架構相關書籍 即便 compiler 底下有分很多子領域,但最常見的依然是面向系統底層的需求,例如 針對某個特殊硬體功能做優化。因此熟悉處理器架構基本上也算必修課題之一 相信各位大學一定修過 Computer Architecture,用的不外乎也是暱稱「白算盤」 的 Computer Organization: https://tinyurl.com/yawxuu8z 這本書已經算不錯了,建議也閱讀他的進階版本: https://tinyurl.com/y86usjqb 再來如果是結合 compiler 與進階硬體架構的書,就不得不推 "The Blue Book": https://tinyurl.com/y924fkmo 這本書我個人是視為聖經 因為雖然裡面只focus在各種層級的平行化問題 但第一,平行化就算過幾十年還是一個難解的問題XDD。第二,該書前三章提出的 dependency analysis 後來變成編譯器開發最重要的基石之一。可以用在非常廣泛的 問題上 除此之外雖然他是在本世紀初出版 但裡面非常多針對特定硬體功能的優化 現在 (意外地)依然可以用 目前就想到這些 如有其他建議歡迎來補充! --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 169.234.228.195 (美國)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/CompilerDev/M.1592370461.A.B56.html ※ 編輯: mshockwave (169.234.228.195 美國), 06/17/2020 13:08:15
1F:推 b0920075: 如果想看實作玩具級編譯器的書或 project 請問有沒有推 06/17 15:43
2F:→ b0920075: 薦哪些是比較友好的? 06/17 15:43
3F:推 JackChung: MLIR簡單好用 06/17 18:26
4F:→ Lipraxde: llvm kaleidoscope 06/17 18:48
5F:推 flypaper: 我覺得gcc難入手許多 常常想要理解某個API的用途就花很 06/18 20:50
6F:→ flypaper: 多時間 巨集重重 模組化沒llvm清楚 有時候想用gdb也沒方 06/18 20:52
7F:→ flypaper: 向 不過也有可能是我的慧根不夠就是了 06/18 20:53
8F:推 Dracarys: 坐等原始碼研讀指南 06/20 14:05
9F:推 LLVMBackend: 這是小弟最近入門llvm所記錄的一些心得 06/27 12:54
10F:→ LLVMBackend: https://llvmphighter.blogspot.com/ 06/27 12:55
11F:推 nevak: 這篇值得自m 06/30 06:33
12F:推 JameC: 太晚發現這個版了,好多有用的資訊,推 07/10 21:05
13F:推 argc: 感謝分享 12/06 23:38
14F:推 kkk99923: 推推 09/10 19:49
15F:推 cseslowpoke: 推 08/29 14:11







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP