可變目標C編譯器:設計與實現 可变目标C编译器:设计与实现

克裡斯多夫 W.弗雷澤 (Christopher W.Fraser), 戴維 R.漢森 (David R.Hanson)

立即出貨 (庫存 < 4)

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

本書系統地介紹了可變目標ANSIC編譯器lcc的設計方法和實現技術。lcc是一個實用的編譯器,能夠為不同的目標機器(如MIPSR3000、SPARC、Intel386及其後續產品)生成代碼。本書結合lcc的具體實現,詳細講述了存儲管理、符號表、詞法分析、語法分析、中間代碼生成、優化、目標代碼產生等編譯程序的各個部分。全書共分19章,各章之後均附有練習。本書特色鮮明,實用性強,適合作為高等院校計算機專業的編譯原理課程的教材或參考書,對從事編譯相關工作的技術人員也有很好的參考價值。

<章節目錄>

出版者的話
譯者序
前言
第1章引論1
1.1文本程序1
1.2如何使用本書2
1.3概述3
1.4設計7
1.5公共聲明11
1.6語法規範13
1.7錯誤14
深入閱讀15
第2章存儲管理16
2.1內存管理接口16
2.2分配區的表示17
2.3空間分配18
2.4空間釋放20
2.5字符串20
深入閱讀23
練習23
第3章符號管理26
3.1符號的表示27
3.2符號表的表示29
3.3作用域的改變32
3.4查找和建立標識符32
3.5標號33
3.6常量34
3.7產生的變量37
深入閱讀38
練習38
第4章類型40
4.1類型表示40
4.2類型管理42
4.3類型斷言45
4.4類型構造器46
4.5函數類型48
4.6結構和枚舉類型49
4.7類型檢查函數52
4.8類型映射56
深入閱讀56
練習57
第5章代碼生成接口59
5.1類型度量59
5.2接口記錄60
5.3符號60
5.4類型61
5.5 dag操作61
5.6接口標誌65
5.7初始化67
5.8定義67
5.9常量69
5.10函數70
5.11接口綁定72
5.12上行調用73
深入閱讀75
練習75
第6章詞法分析器77
6.1輸入77
6.2單詞的識別81
6.3關鍵字的識別85
6.4標識符的識別86
6.5數字的識別87
6.6字符常量和字符串的識別92
深入閱讀95
練習95
第7章語法分析97
7.1語言和語法97
7.2二義性和分析樹98
7.3自上而下的語法分析100
7.4 FIRST和FOLLOW集合102
7.5編寫分析函數104
7.6處理語法錯誤106
深入閱讀110
練習111
第8章表達式112
8.1表達式的表示112
8.2表達式分析115
8.3 C語言表達式的分析117
8.4賦值表達式119
8.5條件表達式121
8.6二元表達式122
8.7一元表達式和後綴表達式124
8.8基本表達式127
深入閱讀130
練習130
第9章表達式語義132
9.1轉換132
9.2一元操作符和後綴操作符136
9.3函數調用141
9.4二元操作符147
9.5賦值操作150
9.6條件操作154
9.7常量折疊156
深入閱讀165
練習165
第10章語句167
10.1代碼的表示167
10.2執行點170
10.3語句的識別171
10.4 if語句173
10.5標號和goto語句174
10.6循環176
10.7 switch語句178
10.8 return語句188
10.9管理標號和跳轉指令191
深入閱讀194
練習194
第11章聲明196
11.1轉換單元196
11.2聲明197
11.3聲明符206
11.4函數聲明符210
11.5結構說明符215
11.6函數定義222
11.7複合語句229
11.8結束處理236
11.9主程序238
深入閱讀240
練習241
第12章中間代碼的生成243
12.1消除公共子表達式244
12.2構建節點248
12.3控制流250
12.4賦值語句256
12.5函數調用259
12.6強制計算順序261
12.7驅動代碼生成263
12.8刪除多次引用的節點267
深入閱讀272
練習273
第13章構造代碼生成器275
13.1代碼生成器的組織276
13.2接口擴展277
13.3上行調用279
13.4節點擴展280
13.5符號擴展282
13.6幀的佈局284
13.7生成塊複製的代碼287
13.8初始化289
深入閱讀290
練習290
第14章選擇和發送指令291
14.1規範292
14.2標記樹294
14.3化簡樹295
14.4代價函數302
14.5調試303
14.6發送器304
14.7寄存器定位309
14.8指令選擇的協調313
14.9共享規則314
14.10編寫規範315
深入閱讀316
練習316
第15章寄存器分配318
15.1組織結構318
15.2寄存器狀態跟蹤319
15.3寄存器分配322
15.4寄存器溢出327
深入閱讀334
練習334
第16章MIPSR3000代碼的生成335
16.1寄存器336
16.2指令的選取339
16.3函數的實現349
16.4數據的定義355
16.5塊的複制359
深入閱讀360
練習360
第17章SPARC代碼的生成362
17.1寄存器363
17.2指令的選取366
17.3函數的實現378
17.4數據的定義384
17.5塊的複制386
深入閱讀387
練習387
第18章X86代碼的生成389
18.1寄存器390
18.2指令的選取394
18.3函數的實現407
18.4數據的定義409
深入閱讀412
練習412
第19章回顧413
19.1數據結構413
19.2接口414
19.3句法和語義分析415
19.4代碼生成和優化416
19.5測試和驗證416
深入閱讀417
參考文獻419