編譯技術與應用(微課視頻版·題庫版)

楊金民 陳果 黎文偉

  • 出版商: 清華大學
  • 出版日期: 2023-04-01
  • 定價: $414
  • 售價: 7.5$311
  • 語言: 簡體中文
  • 頁數: 308
  • 裝訂: 平裝
  • ISBN: 7302631050
  • ISBN-13: 9787302631057
  • 相關分類: Compiler
  • 立即出貨 (庫存 < 4)

  • 編譯技術與應用(微課視頻版·題庫版)-preview-1
  • 編譯技術與應用(微課視頻版·題庫版)-preview-2
  • 編譯技術與應用(微課視頻版·題庫版)-preview-3
編譯技術與應用(微課視頻版·題庫版)-preview-1

商品描述

本書以全新的視角透視編譯技術,圍繞編譯中的詞法分析、語法分析、語法制導的翻譯、語義分析和中間代碼生成、運行環境和目標代碼生成、代碼優化這6個核心問題展開,共分7章。本書重點針對編譯器構造方法學展開分析和論述,以揭示編譯技術的內涵,展示其優美性和藝術性。本書也探索技術演進背後的動因,追蹤業界**技術及其發展趨勢,幫助讀者靈活應對IT技術發展與變遷所帶來的挑戰。 本書內容新穎、通俗易懂,特別適合作為高等院校電腦及相關專業的教材,也可以作為工程技術培訓的教材。本書也非常適合科研人員和工程技術人員閱讀,從中感悟編譯技術的內涵,體會其精妙之處。

目錄大綱

目錄

 

 

第1章編譯技術概述1

1.1計算模型和機器語言的特性2

1.2高級程序語言及其特性4

1.3編譯方法及過程6

1.3.1源程序的構成特性6

1.3.2編譯過程7

1.3.3編譯器的結構特性12

1.4編譯器構造方法學13

1.5編譯前對源程序文本的預處理15

1.6程序調試17

1.7編譯執行和解釋執行18

1.8編譯方式的演進20

1.9虛擬機22

1.10程序語言的發展歷程23

1.11當前主流的編譯器產品24

1.12編譯知識的廣泛應用25

1.13本章小結26

知識拓展: 別名的概述26

習題28

第2章詞法分析29

2.1高級程序語言的詞構成特性29

2.2詞法的描述31

2.2.1正則語言和正則運算31

2.2.2C語言詞法的正則描述33

2.2.3詞法分析的實現框架34

2.2.4正則表達式的含義35

2.3基於狀態轉換圖的詞法分析36

2.3.1基於狀態轉換圖的匹配判斷36

2.3.2狀態轉換圖的特徵37

2.3.3基於狀態轉換圖的通用詞法分析器39

2.4正則表達式的狀態轉換圖自動生成方法40

2.4.1正則表達式的NFA原生構造方法41

2.4.2基於NFA的匹配判斷算法44

2.4.3基於NFA的DFA構造方法46

2.4.4正則表達式的最簡NFA構造法49

2.4.5特殊正則表達式的最簡NFA構造54

2.4.6NFA和DFA中狀態屬性值的確定方法56

2.4.7正則表達式之間的包含關系58

2.5正則表達式及其DFA在文本搜索中的應用61

2.6本章小結62

知識拓展: NFA和DFA構造中涉及的數據結構63

習題65

◆編譯技術與應用(微課視頻版·題庫版)目錄◆第3章語法分析67

3.1程序的樹結構特性68

3.2語言的語法描述69

3.3詞串的語法分析樹及其構造策略73

3.4語法描述和詞法描述的比較75

3.5自頂向下和最左推導的語法分析78

3.5.1自頂向下和最左推導的語法分析過程78

3.5.2左遞歸及其消除方法80

3.5.3左公因子及其提取方法83

3.5.4推導中的產生式選擇84

3.5.5FIRST和FOLLOW函數值求解算法87

3.5.6LL(1)文法特性及其語法分析表93

3.5.7二義性文法的可改造性94

3.5.8基於LL(1)語法分析表和符號棧的語法分析器通用代碼95

3.6自底向上的語法分析98

3.6.1自底向上的語法分析及有待解決的關鍵問題99

3.6.2文法的DFA構造方法100

3.6.3基於狀態棧和文法DFA的LR語法分析104

3.6.4基於FOLLOW函數值的沖突解決方法107

3.6.5基於語法分析表的LR語法分析通用代碼108

3.6.6基於FOLLOW精確化的沖突解決方法112

3.7LL語法分析和LR語法分析的對比116

3.8LR文法設計116

3.8.1DFA物理含義的挖掘和應用117

3.8.2盡量減少文法中的非終結符數量119

3.8.3非終結符語義的寬泛化121

3.8.4文法的二義性及其消除方法124

3.8.5LALR(1)型DFA的收益和代價124

3.8.6文法的上下文無關性126

3.9LR語法分析中錯誤的恢復127

3.10本章小結129

知識拓展: 語法分析表構造中涉及的數據結構130

習題132

第4章語法制導的翻譯135

4.1LR分析中的語法制導翻譯136

4.1.1LR分析中的語法制導翻譯簡介136

4.1.2LR分析中語法制導的翻譯實現框架139

4.1.3詞法分析器構造工具的實現142

4.2LL分析中語法制導的翻譯149

4.2.1LL分析中語法制導的翻譯簡介149

4.2.2LL分析中語法制導的翻譯實現框架150

4.3從LR型SDT得出LL型SDT156

4.4LR語法分析中對繼承屬性的處理158

4.5本章小結161

習題162

第5章語義分析與中間代碼生成164

5.1語義分析和中間代碼生成簡介165

5.1.1程序的層級結構165

5.1.2類型的語義分析167

5.1.3變量的語義分析170

5.1.4函數的語義分析173

5.1.5中間語言簡介174

5.1.6中間代碼生成簡介176

5.2類型和變量的語義分析框架179

5.3類型和變量定義的SDT設計180

5.3.1高級程序語言中的指針語義180

5.3.2類型和變量定義的文法設計182

5.3.3類型和變量定義的語義分析及其SDD設計183

5.3.4類型和變量定義的語義分析SDT設計185

5.4變量使用的SDT設計190

5.4.1變量地址的確定方法190

5.4.2描述變量使用的文法192

5.4.3變量使用的語義分析和中間代碼生成SDD設計194

5.4.4變量使用的語義分析和中間代碼生成SDT設計197

5.5運算的語義分析和中間代碼生成201

5.6類型系統205

5.7分支語句的中間代碼生成206

5.7.1分支語句的文法207

5.7.2分支語句的中間代碼生成SDD設計209

5.7.3分支語句的中間代碼生成SDT設計212

5.7.4分支語句中break和continue語句的處理217

5.8函數調用的語義分析和中間代碼生成218

5.9本章小結219

習題220

第6章運行環境和目標代碼生成222

6.1函數調用223

6.1.1局部變量的靜態存儲分配方案224

6.1.2局部變量的動態存儲分配方案225

6.1.3相對尋址方式帶來的好處228

6.1.4形參和數組的動態性229

6.2軟件集成230

6.2.1源代碼級的軟件集成231

6.2.2二進制可執行文件級的軟件集成233

6.2.3跨模塊內存訪問帶來的問題及解決方法235

6.2.4靜態鏈接與動態鏈接237

6.3軟件調試238

6.3.1程序之間的交互238

6.3.2運行環境的構建239

6.3.3調試器與被調程序之間的協同交互241

6.3.4變量值的獲取與關聯243

6.4垃圾自動回收245

6.4.1基於引用記數的垃圾回收方法246

6.4.2基於定期識別和清掃的垃圾回收方法247

6.4.3基於程序分析的垃圾識別和清除249

6.5異常處理250

6.6面向對象中的多態252

6.6.1面向對象編程問題的揭示253

6.6.2基於代理的解耦和封裝實現方案255

6.6.3基於多態的面向對象編程問題解決方案256

6.6.4接口特性259

6.6.5接口獲取259

6.7本章小結260

習題262

第7章代碼優化264

7.1中間代碼的優化265

7.1.1基本塊和流圖265

7.1.2中間代碼優化途徑267

7.2目標代碼優化基礎270

7.2.1電腦特性270

7.2.2目標語言272

7.2.3目標代碼生成與優化275

7.3寄存器分配276

7.3.1活變量標識算法276

7.3.2基於圖著色的寄存器分配278

7.3.3變量溢出280

7.3.4內存數據的加載和刷新281

7.3.5寄存器騰空和變量溢出283

7.3.6同步函數和異步函數284

7.4基於機器其他特性的代碼優化285

7.4.1基於指令流水線處理的代碼優化285

7.4.2基於高速緩存的代碼優化286

7.4.3基於多核處理器的代碼優化287

7.4.4大數據處理和雲計算中的優化288

7.5本章小結289

習題289

參考文獻291