注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計匯編語言/編譯原理高級編譯器設(shè)計與實現(xiàn)

高級編譯器設(shè)計與實現(xiàn)

高級編譯器設(shè)計與實現(xiàn)

定 價:¥75.00

作 者: (美)Steven S.Muchnick著;趙克佳,沈志宇譯;趙克佳譯
出版社: 機(jī)械工業(yè)出版社
叢編項: 計算機(jī)科學(xué)叢書
標(biāo) 簽: 編譯原理

ISBN: 9787111164296 出版時間: 2005-07-01 包裝: 膠版紙
開本: 26cm 頁數(shù): 624 字?jǐn)?shù):  

內(nèi)容簡介

  本書迎接現(xiàn)代語言和體系結(jié)構(gòu)的挑戰(zhàn),幫助讀者作好準(zhǔn)備,去應(yīng)對將來要遇到的編譯器設(shè)計的問題。本書涵蓋現(xiàn)代微處理器編譯器的設(shè)計和實現(xiàn)方面的所有高級主題。本書從編譯設(shè)計基礎(chǔ)領(lǐng)域中的高級問題開始,廣泛而深入地闡述各種重要的代碼優(yōu)化技術(shù),分析各種優(yōu)化之間的相對重要關(guān)系,以及實現(xiàn)這些優(yōu)化的最有效方法。本書特點●為理解高級編譯器設(shè)計的主要問題奠定了基礎(chǔ)●深入闡述優(yōu)化問題●用Sun的SPARC、IBM的POWER和PowerPC、DEC的Alpha以及Intel的Pentium和相關(guān)商業(yè)編譯器作為案例,說明編譯器結(jié)構(gòu)、中間代碼設(shè)計和各種優(yōu)化方法●給出大量定義清晰的關(guān)于代碼生成、優(yōu)化和其他問題的算法●介紹由作者設(shè)計的以清晰、簡潔的方式描述算法的語言ICAN(非形式編譯算法表示)。本書前言本書討論單機(jī)編譯器設(shè)計和實現(xiàn)技術(shù)領(lǐng)域的前沿問題,重點討論編譯優(yōu)化技術(shù)(超過了本書60%的篇幅)。我們考慮了支持指令級并行的機(jī)器,但幾乎完全忽略了大規(guī)模并行處理和向量處理的有關(guān)問題。本書首先討論編譯器的結(jié)構(gòu)、符號表管理(包括那些允許導(dǎo)入和導(dǎo)出作用域的語言)、中間代碼結(jié)構(gòu)、運(yùn)行時支持問題(包括可以在運(yùn)行時鏈接的共享對象),以及根據(jù)機(jī)器描述自動產(chǎn)生代碼生成器等。之后,探討過程內(nèi)的(通常稱為“全局的”)控制流分析、數(shù)據(jù)流分析、依賴關(guān)系分析和別名分析的各種方法,并介紹一系列的全局優(yōu)化,包括那些作用于程序不同成分(從單個表達(dá)式到整個過程)的優(yōu)化。接下來本書講述過程間的控制流分析、數(shù)據(jù)流分析和別名分析,以及過程間優(yōu)化和如何應(yīng)用過程間信息來改善全局優(yōu)化。然后,討論有效利用層次存儲系統(tǒng)的優(yōu)化技術(shù)。最后,詳細(xì)介紹4個分別來自DEC、IBM、Intel和Sun微系統(tǒng)公司的商業(yè)化編譯系統(tǒng),以提供編譯器結(jié)構(gòu)、中間代碼設(shè)計、優(yōu)化策略和效果的專門例子。如我們將看到的,這些編譯系統(tǒng)采用的技術(shù)具有廣泛的代表性,并用不同的方法獲得了類似的效果。

作者簡介

  StevenS.Muchnick,曾是計算機(jī)科學(xué)教授,后作為惠普的PA-RISC和SUN的SPARC兩種計算機(jī)體系結(jié)構(gòu)的核心開發(fā)成員,將自己的知識和經(jīng)驗應(yīng)用于編譯器設(shè)計,并擔(dān)任這些系統(tǒng)的高級編譯器設(shè)計與實現(xiàn)小組的領(lǐng)導(dǎo)人。他在研究和開發(fā)方面的雙重經(jīng)驗,對于指導(dǎo)讀者作出編譯器設(shè)計決策極具價值。相關(guān)圖書數(shù)據(jù)倉庫(原書第3版)離散數(shù)學(xué)導(dǎo)學(xué)數(shù)據(jù)庫設(shè)計教程(第2版)軟件需求組合數(shù)學(xué)(原書第4版)JAVA編程思想(第2版)數(shù)據(jù)庫系統(tǒng)導(dǎo)論UNIX系統(tǒng)編程信息系統(tǒng)原理:原書第6版現(xiàn)代操作系統(tǒng)(第2版)計算機(jī)網(wǎng)絡(luò):自頂向下方法與Internet特色(原書第3版)C程序設(shè)計語言(第2版·新版)習(xí)題解答計算機(jī)網(wǎng)絡(luò)與因特網(wǎng)(原書第4版)計算機(jī)科學(xué)概論(原書第2版)人工智能:英文可擴(kuò)展并行計算技術(shù)、結(jié)構(gòu)與編程數(shù)據(jù)庫原理、編程與性能Java面向?qū)ο蟪绦蛟O(shè)計教程嵌入式微控制器C++編程思想。第2卷:實用編程技術(shù)微機(jī)接口技術(shù)實驗教程神經(jīng)網(wǎng)絡(luò)原理(原書第2版)編譯原理C++語言的設(shè)計和演化并行計算導(dǎo)論(原書第2版)信息論、編碼與密碼學(xué)3D游戲卷1實時渲染與軟件技術(shù)3D游戲卷2動畫與高級實時渲染技術(shù)數(shù)字圖像處理疑難解析現(xiàn)代信息檢索CAXA數(shù)控銑CAD/CAM技術(shù)C語言的科學(xué)和藝術(shù)計算機(jī)視覺并行程序設(shè)計數(shù)據(jù)庫與事務(wù)處理操作系統(tǒng)計算機(jī)網(wǎng)絡(luò)系統(tǒng)方案(原書第3版)3D計算機(jī)圖形學(xué)(原書第3版)模式分析的核方法

圖書目錄

第1章  高級主題介紹        1
1.1  編譯器結(jié)構(gòu)回顧        1
1.2  基本問題中的高級論題        2
1.3  代碼優(yōu)化的重要性        4
1.4  優(yōu)化編譯器的結(jié)構(gòu)        5
1.5  激進(jìn)型優(yōu)化編譯器中各種優(yōu)化的位置        7
1.6  本書各章的閱讀流程        10
1.7  本書沒有涉及的相關(guān)主題        10
1.8  例子中所用的目標(biāo)機(jī)        11
1.9  數(shù)的表示與數(shù)據(jù)的大小        11
1.10  小結(jié)        11
1.11  進(jìn)一步閱讀        12
1.12  練習(xí)        12
第2章  非形式化編譯算法表示        13
2.1  擴(kuò)展的巴科斯-諾爾范式語法表示        13
2.2  ICAN簡介        14
2.3  ICAN概貌        16
2.4  完整的程序        17
2.5  類型定義        18
2.6  聲明        18
2.7  數(shù)據(jù)類型和表達(dá)式        19
2.7.1  一般簡單類型        20
2.7.2  枚舉類型        20
2.7.3  數(shù)組        21
2.7.4  集合        21
2.7.5  序列        22
2.7.6  元組        23
2.7.7  記錄        23
2.7.8  聯(lián)合        24
2.7.9  函數(shù)        24
2.7.10  編譯專用的類型        24
2.7.11  值nil        25
2.7.12  size運(yùn)算符        25
2.8  語句        25
2.8.1  賦值語句        26
2.8.2  過程調(diào)用語句        27
2.8.3  返回語句        27
2.8.4  goto語句        27
2.8.5  if語句        27
2.8.6  case語句        27
2.8.7  while語句        28
2.8.8  for語句        28
2.8.9  repeat語句        28
2.8.10  ICAN的關(guān)鍵字        28
2.9  小結(jié)        29
2.10  進(jìn)一步閱讀        29
2.11  練習(xí)        29
第3章  符號表結(jié)構(gòu)        31
3.1  存儲類、可見性和生命期        31
3.2  符號屬性和符號表項        32
3.3  局部符號表管理        34
3.4  全局符號表結(jié)構(gòu)        35
3.5  存儲綁定和符號寄存器        38
3.6  生成取數(shù)和存數(shù)指令的方法        42
3.7  小結(jié)        46
3.8  進(jìn)一步閱讀        46
3.9  練習(xí)        47
第4章  中間表示        49
4.1  與中間語言設(shè)計有關(guān)的問題        49
4.2  高級中間語言        50
4.3  中級中間語言        51
4.4  低級中間語言        52
4.5  多級中間語言        52
4.6  我們的中間語言:MIR、HIR和LIR        53
4.6.1  中級中間表示(MIR)        53
4.6.2  高級中間表示(HIR)        56
4.6.3  低級中間表示(LIR)        57
4.7  用ICAN表示MIR、HIR和LIR        58
4.7.1  用ICAN表示MIR        59
4.7.2  用ICAN表示HIR        62
4.7.3  用ICAN表示LIR        64
4.8  管理中間代碼的若干數(shù)據(jù)結(jié)構(gòu)和例程的ICAN命名        67
4.9  其他中間語言形式        70
4.9.1  三元式        70
4.9.2  樹        71
4.9.3  無環(huán)有向圖(DAG)        72
4.9.4  前綴波蘭表示        73
4.10  小結(jié)        74
4.11  進(jìn)一步閱讀        74
4.12  練習(xí)        74
第5章  運(yùn)行時支持        77
5.1  數(shù)據(jù)表示和指令        77
5.2  寄存器用法        80
5.3  局部棧幀        81
5.4  運(yùn)行時棧        83
5.5  參數(shù)傳遞規(guī)則        84
5.6  過程的入口處理、出口處理、調(diào)用和返回        86
5.6.1  用寄存器傳遞參數(shù):平面寄存器文件        87
5.6.2  用運(yùn)行時棧傳遞參數(shù)        88
5.6.3  用具有寄存器窗口的寄存器傳遞參數(shù)        89
5.6.4  過程值變量        91
5.7  代碼共享與位置無關(guān)代碼        91
5.8  符號和多態(tài)語言支持        94
5.9  小結(jié)        96
5.10  進(jìn)一步閱讀        96
5.11  練習(xí)        97
第6章  自動產(chǎn)生代碼生成器        99
6.1  簡介代碼生成器的自動生成        100
6.2  語法制導(dǎo)技術(shù)        100
6.2.1  代碼生成器        102
6.2.2  代碼生成器的產(chǎn)生器        103
6.2.3  刪除鏈循環(huán)        110
6.2.4  刪除句法阻滯        112
6.2.5  最后的考慮        115
6.3  語義制導(dǎo)的分析介紹        115
6.4  樹模式匹配和動態(tài)規(guī)劃        116
6.5  小結(jié)        120
6.6  進(jìn)一步閱讀        120
6.7  練習(xí)        121
第7章  控制流分析        123
7.1  控制流分析的方法        125
7.2  深度為主查找、前序遍歷、后序遍歷和寬度為主查找        128
7.3  必經(jīng)結(jié)點和后必經(jīng)結(jié)點        132
7.4  循環(huán)和強(qiáng)連通分量        139
7.5  可歸約性        143
7.6  區(qū)間分析和控制樹        144
7.7  結(jié)構(gòu)分析        147
7.8  小結(jié)        156
7.9  進(jìn)一步閱讀        157
7.10  練習(xí)        157
第8章  數(shù)據(jù)流分析        159
8.1  一個例子:到達(dá)-定值        159
8.2  基本概念:格、流函數(shù)和不動點        163
8.3  數(shù)據(jù)流問題及其解決方法的分類        166
8.4  迭代數(shù)據(jù)流分析        168
8.5  流函數(shù)的格        171
8.6  基于控制樹的數(shù)據(jù)流分析        172
8.7  結(jié)構(gòu)分析        172
8.7.1  結(jié)構(gòu)分析:向前問題        172
8.7.2  結(jié)構(gòu)分析:向后問題        178
8.7.3  結(jié)構(gòu)分析方程的表示        180
8.8  區(qū)間分析        181
8.9  其他方法        182
8.10  du鏈、ud鏈和網(wǎng)        183
8.11  靜態(tài)單賦值形式        184
8.12  數(shù)組、結(jié)構(gòu)和指針的處理        188
8.13  數(shù)據(jù)流分析器的自動構(gòu)造        188
8.14  更貪婪的分析        189
8.15  小結(jié)        191
8.16  進(jìn)一步閱讀        192
8.17  練習(xí)        192
第9章  依賴關(guān)系分析和依賴圖        195
9.1  依賴關(guān)系        195
9.2  基本塊依賴DAG        196
9.3  循環(huán)中的依賴關(guān)系        200
9.4  依賴關(guān)系測試        204
9.5  程序依賴圖        207
9.6  動態(tài)分配的對象之間的依賴關(guān)系        209
9.7  小結(jié)        210
9.8  進(jìn)一步閱讀        211
9.9  練習(xí)        211
第10章  別名分析        213
10.1  各種現(xiàn)實程序設(shè)計語言中的別名        215
10.1.1  Fortran 77中的別名        216
10.1.2  Pascal中的別名        216
10.1.3  C中的別名        217
10.1.4  Fortran 90中的別名        218
10.2  別名收集器        218
10.3  別名傳播器        222
10.4  小結(jié)        227
10.5  進(jìn)一步閱讀        227
10.6  練習(xí)        228
第11章  優(yōu)化簡介        229
11.1  第12~18章討論的全局優(yōu)化        230
11.2  流敏感性和可能與一定信息        231
11.3  各種優(yōu)化的重要性        231
11.4  優(yōu)化的順序與重復(fù)        232
11.5  進(jìn)一步閱讀        235
11.6  練習(xí)        235
第12章  前期優(yōu)化        237
12.1  常數(shù)表達(dá)式計算(常數(shù)折疊)        237
12.2  聚合量標(biāo)量替代        238
12.3  代數(shù)化簡和重結(jié)合        240
12.3.1  地址表達(dá)式的代數(shù)化簡和重結(jié)合        241
12.3.2  對浮點表達(dá)式應(yīng)用代數(shù)化簡        246
12.4  值編號        247
12.4.1  作用于基本塊的值編號        247
12.4.2  全局值編號        251
12.5  復(fù)寫傳播        256
12.6  稀有條件常數(shù)傳播        261
12.7  小結(jié)        267
12.8  進(jìn)一步閱讀        269
12.9  練習(xí)        269
第13章  冗余刪除        271
13.1  公共子表達(dá)式刪除        271
13.1.1  局部公共子表達(dá)式刪除        272
13.1.2  全局公共子表達(dá)式刪除        276
13.1.3  向前替代        284
13.2  循環(huán)不變代碼外提        284
13.3  部分冗余刪除        292
13.4  冗余刪除和重結(jié)合        298
13.5  代碼提升        299
13.6  小結(jié)        302
13.7  進(jìn)一步閱讀        302
13.8  練習(xí)        304
第14章  循環(huán)優(yōu)化        305
14.1  歸納變量優(yōu)化        305
14.1.1  識別歸納變量        306
14.1.2  強(qiáng)度削弱        312
14.1.3  活躍變量分析        319
14.1.4  歸納變量刪除和線性函數(shù)測試替換        320
14.2  不必要邊界檢查的消除        325
14.3  小結(jié)        327
14.4  進(jìn)一步閱讀        329
14.5  練習(xí)        329
第15章  過程優(yōu)化        331
15.1  尾調(diào)用優(yōu)化和尾遞歸刪除        331
15.2  過程集成        334
15.3  內(nèi)嵌擴(kuò)展        337
15.4  葉例程優(yōu)化和收縮包裝        338
15.4.1  葉例程優(yōu)化        338
15.4.2  收縮包裝        339
15.5  小結(jié)        341
15.6  進(jìn)一步閱讀        343
15.7  練習(xí)        343
第16章  寄存器分配        345
16.1  寄存器分配和指派        345
16.2  局部方法        346
16.3  圖著色        347
16.3.1  圖著色寄存器分配概述        347
16.3.2  頂層結(jié)構(gòu)        349
16.3.3  網(wǎng),可分配對象        350
16.3.4  沖突圖        354
16.3.5  沖突圖的表示        355
16.3.6  寄存器合并        358
16.3.7  計算溢出代價        359
16.3.8  修剪沖突圖        361
16.3.9  指派寄存器        363
16.3.10  溢出符號寄存器        365
16.3.11  圖著色寄存器分配的兩個例子        367
16.3.12  其他問題        375
16.4  基于優(yōu)先級的圖著色        376
16.5  其他寄存器分配方法        377
16.6  小結(jié)        377
16.7  進(jìn)一步閱讀        378
16.8  練習(xí)        380
第17章  代碼調(diào)度        381
17.1  指令調(diào)度        381
17.1.1  分支調(diào)度        382
17.1.2  表調(diào)度        385
17.1.3  自動生成指令調(diào)度器        390
17.1.4  超標(biāo)量實現(xiàn)有關(guān)的調(diào)度        390
17.1.5  基本塊調(diào)度中的其他問題        390
17.1.6  跨基本塊邊界的調(diào)度        392
17.2  前瞻取和上推        392
17.3  前瞻調(diào)度        393
17.4  軟流水        393
17.4.1  窗口調(diào)度        395
17.4.2  展開-壓實軟流水        397
17.4.3  循環(huán)展開        400
17.4.4  變量擴(kuò)張        403
17.4.5  寄存器重命名        404
17.4.6  軟流水的其他方法        407
17.4.7  層次歸約        407
17.5  蹤跡調(diào)度        408
17.6  滲透調(diào)度        409
17.7  小結(jié)        411
17.8  進(jìn)一步閱讀        413
17.9  練習(xí)        413
第18章  控制流和低級優(yōu)化        415
18.1  不可到達(dá)代碼的刪除        415
18.2  伸直化        417
18.3  if化簡        419
18.4  循環(huán)化簡        420
18.5  循環(huán)倒置        421
18.6  無開關(guān)化        422
18.7  分支優(yōu)化        422
18.8  尾融合或交叉轉(zhuǎn)移        423
18.9  條件傳送        424
18.10  死代碼刪除        425
18.11  分支預(yù)測        429
18.12  機(jī)器方言和指令歸并        430
18.13  小結(jié)        433
18.14  進(jìn)一步閱讀        433
18.15  練習(xí)        435
第19章  過程間分析與優(yōu)化        437
19.1  過程間控制流分析:調(diào)用圖        438
19.2  過程間數(shù)據(jù)流分析        445
19.2.1  流不敏感副作用分析        445
19.2.2  流敏感副作用:程序概要圖        455
19.2.3  副作用計算中的其他問題        458
19.3  過程間常數(shù)傳播        458
19.4  過程間別名分析        461
19.4.1  流不敏感別名分析        462
19.4.2  傳值和傳指針語言的過程間別名分析        471
19.5  過程間優(yōu)化        473
19.6  過程間寄存器分配        475
19.6.1  連接時的寄存器分配        475
19.6.2  編譯時的過程間寄存器分配        477
19.7  全局引用的聚合        477
19.8  過程間程序管理中的其他主題        478
19.9  小結(jié)        478
19.10  進(jìn)一步閱讀        480
19.11  練習(xí)        480
第20章  存儲層次優(yōu)化        483
20.1  數(shù)據(jù)和指令高速緩存的影響        484
20.2  指令高速緩存優(yōu)化        485
20.2.1  利用硬件輔助:指令預(yù)取        485
20.2.2  過程排序        485
20.2.3  過程和基本塊的放置        489
20.2.4  過程內(nèi)的代碼安置        489
20.2.5  過程分裂        492
20.2.6  過程內(nèi)和過程間方法的結(jié)合        492
20.3  數(shù)組元素的標(biāo)量替換        493
20.4  數(shù)據(jù)高速緩存優(yōu)化        496
20.4.1  過程間的數(shù)據(jù)安排        497
20.4.2  循環(huán)轉(zhuǎn)換        498
20.4.3  局部性與循環(huán)鋪砌        502
20.4.4  利用硬件輔助:數(shù)據(jù)預(yù)取        504
20.5  標(biāo)量優(yōu)化與面向存儲器的優(yōu)化        505
20.6  小結(jié)        506
20.7  進(jìn)一步閱讀        508
20.8  練習(xí)        508
第21章  編譯器實例分析與未來的發(fā)展趨勢        509
21.1  Sun用于SPARC的編譯器        510
21.1.1  SPARC體系結(jié)構(gòu)        510
21.1.2  Sun SPARC編譯器        511
21.2  IBM POWER和PowerPC體系結(jié)構(gòu)的XL編譯器        517
21.2.1  POWER和PowerPC體系結(jié)構(gòu)        517
21.2.2  XL編譯器        518
21.3  DEC用于Alpha的編譯器        524
21.3.1  Alpha體系結(jié)構(gòu)        524
21.3.2  Alpha的GEM編譯器        525
21.4  Intel 386體系結(jié)構(gòu)上的Intel參考編譯器        530
21.4.1  Intel 386體系結(jié)構(gòu)        530
21.4.2  Intel編譯器        531
21.5  小結(jié)        538
21.6  編譯器設(shè)計和實現(xiàn)未來的趨勢        539
21.7  進(jìn)一步閱讀        539
附錄A  本書使用的匯編語言指南        541
附錄B  集合、序列、樹、DAG和函數(shù)的表示        549
附錄C  軟件資源        557
參考文獻(xiàn)        561
索引        579

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號