《現代編譯原理:C語言描述(修訂版)》是2020年3月人民郵電出版社出版的圖書,作者是[美]安德魯·W·安佩爾(Andrew W·Appel)、馬亞·金斯伯格(Maia Ginsburg)。
基本介紹
- 中文名:現代編譯原理:C語言描述(修訂版)
- 作者:[美]安德魯·W·安佩爾(Andrew W·Appel)、馬亞·金斯伯格(Maia Ginsburg)
- ISBN:9787115476883
- 頁數:385頁
- 定價:89元
- 出版社:人民郵電出版社
- 出版時間:2020年3月
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
本書全面講述了現代編譯器的各個組成部分,包括詞法分析、語法分析、抽象語法、語義檢查、中間代碼表示、指令選擇、數據流分析、暫存器分配以及運行時系統等。全書分成兩部分,* 一部分是編譯的基礎知識,適用於* 一門編譯原理課程(一個學期);* 二部分是高 級主題,包括面向對象語言和函式語言、垃圾收集、循環最佳化、存儲結構最佳化等,適合於後續課程或研究生教學。書中專門為學生提供了一個用C語言編寫的實習項目,包括前端和後端設計,學生可以在一學期內創建功能完整的編譯器。
圖書目錄
* 一部分 編譯基本原理
* 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