編譯器設計實戰:基於Racket的增量式設計

相關主題

商品描述

本書將帶領讀者使用Racket語言動手構建編譯器,通過循序漸進的方法,在設計和實現編譯器的過程中了解基本概念、算法和數據結構等相關知識。本書將每章作為構建編譯器的一個基本“步驟”,逐步為編譯器添加功能。全書涵蓋變量、寄存器、條件、循環、元組、函數、動態類型、通用類型等內容。本書適合作為高等院校編譯原理等課程的教材,也適合相關技術人員參考。

作者簡介

Jeremy G. Siek,印第安納大學信息與計算學院的計算機科學教授,教授編程、編程語言、編譯器、邏輯學和其他計算機科學領域的課程。他設計了新的語言特性來幫助程序員創建和使用軟件庫和特定於領域的語言,特別是通用的和高性能的語言。通過Walid Taha,他發明了在同一種語言中混合靜態和動態類型檢查的漸進類型方法。在此之前,他是Boost Graph Library一書的合著者。

目錄大綱

譯者序
前言
第1章 預備知識
1.1 抽象語法樹
1.2 語法
1.3 模式匹配
1.4 遞歸函數
1.5 解釋器
1.6 編譯器示例:部分求值器
第2章 整數與變量
2.1 LVar語言
2.1.1 通過方法覆蓋來擴展解釋器
2.1.2 LVar語言的定義性解釋器
2.2 x86Int匯編語言
2.3 規劃x86匯編語言之旅
2.4 唯一化變量
2.5 移除覆雜操作數
2.6 詳細控制
2.7 選擇指令
2.8 分配變量存儲
2.9 修補指令
2.10 生成起始和收尾代碼
2.11 挑戰:LVar的部分求值器
第3章 寄存器分配
3.1 寄存器和調用約定
3.2 活躍性分析
3.3 構建幹涉圖
3.4 利用數獨進行圖著色
3.5 修補指令
3.6 起始和收尾代碼
3.7 挑戰:傳送偏置
3.8 延伸閱讀
第4章 布爾值和條件表達式
4.1 LIf語言
4.2 LIf程序的類型檢查
4.3 CIf中間語言
4.4 x86If語言
4.5 收縮LIf語言
4.6 唯一化變量
4.7 移除覆雜操作數
4.8 詳細控制
4.8.1 詳細尾部和賦值處理
4.8.2 創建塊
4.8.3 謂詞詳細處理
4.8.4 詳細控制和收縮之間的相互作用
4.9 選擇指令
4.10 寄存器分配
4.10.1 活躍性分析
4.10.2 構建幹涉圖
4.11 修補指令
4.12 挑戰:優化塊和去除跳轉
4.12.1 優化塊
4.12.2 去除跳轉
4.13 延伸閱讀
第5章 循環和數據流分析
5.1 LWhile語言
5.2 循環控制流和數據流分析
5.3 可變變量和移除覆雜操作數
5.4 揭示get!
5.5 移除覆雜操作數
5.6 詳細控制和C?
5.7 選擇指令
5.8 寄存器分配
第6章 元組和垃圾回收
6.1 LTup語言
6.2 垃圾回收
6.2.1 雙空間覆制收集器
6.2.2 通過Cheney算法進行圖覆制
6.2.3 數據表示
6.2.4 垃圾回收器的實現
6.3 顯露分配
6.4 移除覆雜操作數
6.5 詳細控制和CTup語言
6.6 選擇指令和x86Global語言
6.7 寄存器分配
6.8 起始和收尾代碼
6.9 挑戰:簡單結構
6.10 挑戰:數組
6.10.1 數據表示
6.10.2 重載解析
6.10.3 邊界檢查
6.10.4 顯露分配
6.11 揭示get!
6.11.1 移除覆雜操作數
6.11.2 詳細控制
6.11.3 選擇指令
6.12 挑戰:分代收集
6.13 延伸閱讀
第7章 函數
7.1 LFun語言
7.2 x86匯編下的函數
7.2.1 調用約定
7.2.2 高效尾調用
7.3 收縮LFun語言
7.4 揭示函數和LFunRef語言
7.5 限制函數
7.6 移除覆雜操作數
7.7 詳細控制和CFun語言
7.8 選擇指令和語言
7.9 寄存器分配
7.9.1 活躍性分析
7.9.2 構建幹涉圖
7.9.3 分配寄存器
7.10 修補指令
7.11 起始和收尾代碼
7.12 轉換舉例
第8章 詞法作用域函數
8.1 Lλ語言
8.2 賦值和詞法作用域函數
8.3 賦值轉換
8.4 閉包轉換
8.5 轉換舉例
8.6 顯露分配
8.7 詳細控制和CClos語言
8.8 選擇指令
8.9 挑戰:優化閉包
8.10 延伸閱讀
第9章 動態類型
9.1 LDyn語言
9.2 標記值的表示
9.3 LAny語言
9.4 強制轉換插入:編譯LDyn為LAny
9.5 揭示強制轉換
9.6 移除覆雜操作數
9.7 詳細控制和CAny
9.8 選擇指令
9.9 LAny的寄存器分配
第10章 漸變類型
10.1 類型檢查L?
10.2 解釋LCast
10.3 插入強制轉換
10.4 低層類型轉換
10.5 區分代理
10.6 揭示強制轉換
10.7 閉包轉換
10.8 選擇指令
10.9 延伸閱讀
第11章 泛型
11.1 編譯泛型
11.2 解析實例化
11.3 擦除泛型類型
附錄
參考文獻

最後瀏覽商品 (1)