Essentials of Compilation筆記
於 2023年7月11日 (二) 20:24 由 Tankianting(討論 | 貢獻) 所做的修訂
- 標題:Essentials of Compilation: An Incremental Approach in Racket
- 暫譯:編譯的要素——在Racket的遞增臨近法
- 作者:Jeremy G. Siek
- ISBN 9780262047760
概要
- 這基本上是印第安納大學的各編譯器老師的結晶
- 講述必要的觀念、演算法、如何利用映射的觀念將上層軟體對應到硬體
- JIT編譯、程式分析、編譯最佳化(那是閱後的進階課題)
- 編譯器是用許多關卡(pass)轉換而來的。
- nanopass:避免各環節過度耦合
- 另有Python版
各章主題
- ch1,2 抽象語法樹、遞迴函數
- ch3 圖着色 graph coloring 問題,以分配記憶體暫存器。
- ch4 條件表達式,將遞迴函數轉換成goto
- ch5 加迴圈與可變量:
- 資訊流分析與暫存器分析
- ch6 加於「堆積」heap分配的tuple(元組)和垃圾回收
- Ch7 加沒有 lexical scoping 的函數(類似 C語言函數)
- 提到呼叫堆疊 stack 和
- 介紹記憶體分配和GC
- Ch8 lexical scoping:閉包如何轉換成 C 語言的 function 和 tuple
- Ch9:動態型別,引入 Any
- Ch10:Gradual Typing
- Ch11:Generics(泛型)