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