産品特色
編輯推薦
本書享有“虎書”的稱號,與有“龍書”之稱的《編譯原理》齊名,在先進性、新穎性上有很好的優勢。
本書是經典編譯原理教材,國際上眾多名校均采用本書作為編譯原理課程的教材,包括美國麻省理工學院、加州大學伯剋利分校、普林斯頓大學和英國劍橋大學等。
《現代編譯原理:C語言描述(修訂版)》按照編譯器處理過程的各個階段依次組織,並精心設計瞭一個“學生項目編譯器”的框架和模塊接口。每一章結尾均給齣習題,使得學生在掌握瞭編譯原理和方法的同時,能夠理論聯係實際地親自動手體驗具體的實現過程。
《現代編譯原理:C語言描述(修訂版)》還增加瞭一些其他編譯原理教科書沒有涉及的內容。前端增加瞭麵嚮對象的程序設計語言、函數式程序設計語言等現代語言的編譯實現方法,後端增加瞭針對現代計算機體係結構特徵的一些比較成熟的優化方法。這展現瞭現代商業編譯器需解決的一些關鍵問題,開拓瞭學生的視野,為未來更深入的研究奠定基礎。
內容簡介
本書全麵講述瞭現代編譯器的各個組成部分,包括詞法分析、語法分析、抽象語法、語義檢查、中間代碼錶示、指令選擇、數據流分析、寄存器分配以及運行時係統等。全書分成兩部分,* 一部分是編譯的基礎知識,適用於* 一門編譯原理課程(一個學期);* 二部分是高 級主題,包括麵嚮對象語言和函數語言、垃圾收集、循環優化、存儲結構優化等,適閤於後續課程或研究生教學。書中專門為學生提供瞭一個用C語言編寫的實習項目,包括前端和後端設計,學生可以在一學期內創建功能完整的編譯器。
作者簡介
Andrew W. Appel
美國普林斯頓大學計算機科學係教授,1998~1999年在貝爾實驗室做研究工作。主要研究方嚮是計算機安全、編譯器設計、程序設計語言等。
Maia Ginsburg
美國普林斯頓大學計算機科學係講師。
目錄
* 一部分 編譯基本原理
* 1章 緒論 1
1.1 模塊與接口 1
1.2 工具和軟件 3
1.3 樹語言的數據結構 3
程序設計:直綫式程序解釋器 7
推薦閱讀 8
習題 9
* 2章 詞法分析 10
2.1 詞法單詞 10
2.2 正則錶達式 11
2.3 有限自動機 13
2.4 非確定有限自動機 15
2.5 Lex:詞法分析器的生成器 20
程序設計:詞法分析 22
推薦閱讀 23
習題 23
第3章 語法分析 27
3.1 上下文無關文法 28
3.2 預測分析 32
3.3 LR分析 39
3.4 使用分析器的生成器 48
3.5 錯誤恢復 54
程序設計:語法分析 57
推薦閱讀 58
習題 58
第4章 抽象語法 62
4.1 語義動作 62
4.2 抽象語法分析樹 65
程序設計:抽象語法 71
推薦閱讀 71
習題 72
第5章 語義分析 73
5.1 符號錶 73
5.2 Tiger編譯器的綁定 79
5.3 錶達式的類型檢查 82
5.4 聲明的類型檢查 84
程序設計:類型檢查 86
習題 87
第6章 活動記錄 89
6.1 棧幀 90
6.2 Tiger編譯器的棧幀 96
程序設計:棧幀 102
推薦閱讀 103
習題 103
第7章 翻譯成中間代碼 106
7.1 中間錶示樹 106
7.2 翻譯為樹中間語言 108
7.3 聲明 120
程序設計:翻譯成樹 122
習題 123
第8章 基本塊和軌跡 125
8.1 規範樹 126
8.2 處理條件分支 131
推薦閱讀 134
習題 134
第9章 指令選擇 136
9.1 指令選擇算法 138
9.2 CISC機器 144
9.3 Tiger編譯器的指令選擇 146
程序設計:指令選擇 152
推薦閱讀 153
習題 154
* 10章 活躍分析 155
10.1 數據流方程的解 156
10.2 Tiger編譯器的活躍分析 162
程序設計:構造流圖 164
程序設計:活躍分析模塊 165
習題 165
* 11章 寄存器分配 166
11.1 通過簡化進行著色 166
11.2 閤並 168
11.3 預著色的結點 171
11.4 圖著色的實現 175
11.5 針對樹的寄存器分配 181
程序設計:圖著色 184
推薦閱讀 185
習題 185
* 12章 整閤為一體 188
程序設計:過程入口/齣口 189
程序設計:創建一個可運行的編譯器 191
* 二部分 高 級主題
* 13章 垃圾收集 193
13.1 標記-清掃式收集 194
13.2 引用計數 197
13.3 復製式收集 198
13.4 分代收集 201
13.5 增量式收集 203
13.6 Baker算法 205
13.7 編譯器接口 205
程序設計:描述字 208
程序設計:垃圾收集 208
推薦閱讀 208
習題 210
* 14章 麵嚮對象的語言 211
14.1 類 211
14.2 數據域的單繼承性 213
14.3 多繼承 214
14.4 測試類成員關係 216
14.5 私有域和私有方法 218
14.6 無類語言 219
14.7 麵嚮對象程序的優化 219
程序設計:OBJECT-Tiger 220
推薦閱讀 220
習題 221
* 15章 函數式程序設計語言 222
15.1 一個簡單的函數式語言 222
15.2 閉包 224
15.3 不變的變量 225
15.4 內聯擴展 229
15.5 閉包變換 233
15.6 高效的尾遞歸 235
15.7 懶惰計算 236
推薦閱讀 243
程序設計:編譯函數式語言 244
習題 244
* 16章 多態類型 246
16.1 參數多態性 246
16.2 類型推論 253
16.3 多態變量的錶示 259
16.4 靜態重載的解決方法 265
推薦閱讀 266
習題 266
* 17章 數據流分析 269
17.1 流分析使用的中間錶示 270
17.2 各種數據流分析 271
17.3 使用數據流分析結果的幾種轉換 274
17.4 加快數據流分析 276
17.5 彆名分析 281
推薦閱讀 285
習題 285
* 18章 循環優化 287
18.1 必經結點 289
18.2 循環不變量計算 292
18.3 歸納變量 293
18.4 數組邊界檢查 297
18.5 循環展開 300
推薦閱讀 301
習題 301
* 19章 靜態單賦值形式 303
19.1 轉化為SSA形式 305
19.2 必經結點樹的高效計算 310
19.3 使用SSA的優化算法 315
19.4 數組、指針和存儲器 320
19.5 控製依賴圖 321
19.6 從SSA形式轉變迴來 323
19.7 函數式中間形式 324
推薦閱讀 327
習題 328
* 20章 流水和調度 331
20.1 沒有資源約束時的循環調度 332
20.2 有資源約束的循環流水 336
20.3 分支預測 341
推薦閱讀 343
習題 343
* 21章 存儲層次 346
21.1 cache的組織結構 346
21.2 cache塊對齊 349
21.3 預取 350
21.4 循環交換 354
21.5 分塊 355
21.6 垃圾收集和存儲層次 357
推薦閱讀 358
習題 358
附錄 Tiger語言參考手冊 360
參考文獻 368
索引 376
現代編譯原理 C語言描述 修訂版 下載 mobi epub pdf txt 電子書 格式