編譯器的設(shè)計(jì)與實(shí)現(xiàn)是一種實(shí)踐性很強(qiáng)的工程,作為講述編譯器實(shí)現(xiàn)方法的編譯原理課程,既需要講述理論和原理,也離不開(kāi)具體的實(shí)踐,如何才能更好的學(xué)習(xí)和掌握呢?這里小編推薦廣大學(xué)者閱讀現(xiàn)代編譯原理c語(yǔ)言描述,這是一本c語(yǔ)言編譯原理課程的教材,由阿佩爾、金斯伯格編著,全書(shū)全面講述了現(xiàn)代編譯器的各個(gè)組成部分,包括:詞法分析、語(yǔ)法分析、抽象語(yǔ)法、語(yǔ)義檢查、中間代碼表示、指令選擇、數(shù)據(jù)流分析、寄存器分配以及運(yùn)行時(shí)系統(tǒng)等,并且為學(xué)生提供了一個(gè)用C語(yǔ)言編寫(xiě)的實(shí)習(xí)項(xiàng)目,包括前端和后端設(shè)計(jì),學(xué)生可以在一學(xué)期內(nèi)創(chuàng)建一個(gè)功能完整的編譯器,歡迎免費(fèi)下載閱讀。
內(nèi)容介紹
《現(xiàn)代編譯原理c語(yǔ)言描述》全面講述了現(xiàn)代編譯器的結(jié)構(gòu)、編譯算法和實(shí)現(xiàn)方法,是Andrew w.Apple的“虎書(shū)”——Modern Compiler Implementation——“紅、藍(lán)、綠”三序列之一。這三本書(shū)的內(nèi)容基本相同。但是使用不同的語(yǔ)言來(lái)實(shí)現(xiàn)書(shū)中給出的一個(gè)編譯器。本書(shū)使用的是更適合廣大讀者的c語(yǔ)言,而另外兩本書(shū)分別采用ML語(yǔ)言和Java語(yǔ)言。
本書(shū)的另一個(gè)特點(diǎn)是增加了一些其他編譯原理教科書(shū)沒(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)化方法。這部分內(nèi)容展現(xiàn)了現(xiàn)代商業(yè)編譯器需解決的一些關(guān)鍵問(wèn)題,開(kāi)拓了學(xué)生的視野,為學(xué)生未來(lái)進(jìn)行更深入的研究奠定了基礎(chǔ)。
《現(xiàn)代編譯原理c語(yǔ)言描述》全面講述了現(xiàn)代編譯器的各個(gè)組成部分,包括詞法分析、語(yǔ)法分析、抽象語(yǔ)法、語(yǔ)義檢查、中間代碼表示、指令選擇、數(shù)據(jù)流分析、寄存器分配以及運(yùn)行時(shí)系統(tǒng)等。全書(shū)分成兩部分,第一部分是編譯的基礎(chǔ)知識(shí),適用于第一門編譯原理課程(一個(gè)學(xué)期);第二部分是高級(jí)主題,包括面向?qū)ο笳Z(yǔ)言和函數(shù)語(yǔ)言、垃圾收集、循環(huán)優(yōu)化、ssA(靜態(tài)單賦值)形式、循環(huán)調(diào)度、存儲(chǔ)結(jié)構(gòu)優(yōu)化等,適合于后續(xù)課程或研究生教學(xué)。書(shū)中專門為用戶提供了一個(gè)用C語(yǔ)言編寫(xiě)的實(shí)習(xí)項(xiàng)目,包括前端和后端設(shè)計(jì),學(xué)生可以在一學(xué)期內(nèi)創(chuàng)建一個(gè)功能完整的編譯器。
現(xiàn)代編譯原理c語(yǔ)言描述章節(jié)目錄
第一部分編譯基本原理
第1章 緒論
1.1模塊與接口
1.2 工具和軟件
1.3樹(shù)語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)
程序設(shè)計(jì):直線式程序解釋器
推薦閱讀
習(xí)題
第2章 詞法分析
2.1詞法單詞
2.2正則表達(dá)式
2.3有限自動(dòng)機(jī)
2.4非確定有限自動(dòng)機(jī)
2.4.1將正則表達(dá)式轉(zhuǎn)換為NFA
2.4.2將NFA轉(zhuǎn)換為DFA
2.5 Lex:詞法分析器的生成器
程序設(shè)計(jì):詞法分析
推薦閱讀
習(xí)題
第3章 語(yǔ)法分析
3.1上下文無(wú)關(guān)文法
3.1.1推導(dǎo)
3.1.2語(yǔ)法分析樹(shù)
3.1.3二義性文法
3.1.4文件結(jié)束符
3.2預(yù)測(cè)分析
3.2.1 FIRST集合和FOLLOW集合
3.2.2構(gòu)造一個(gè)預(yù)測(cè)分析器
3.2.3消除左遞歸
3.2.4提取左因子
3.2.5錯(cuò)誤恢復(fù)
3.3 LR分析
3.3.1 LR分析引擎
3.3.2 LR(0)分析器生成器
3.3.3 SLR分析器的生成
3.3.4 LR(1)項(xiàng)和LR(1)分析表
3.3.5 LALR(1)分析表
3.3.6各類文法的層次一
3.3.7二義性文法的LR分析一
3.4使用分析器的生成器一
3.4.1 沖突一
3.4.2優(yōu)先級(jí)指導(dǎo)
3.4.3語(yǔ)法和語(yǔ)義
3.5錯(cuò)誤恢復(fù)
3.5.1用elTOI‘符號(hào)恢復(fù)
3.5.2全局錯(cuò)誤修復(fù)
程序設(shè)計(jì):語(yǔ)法分析
推薦閱讀
習(xí)題
第4章 抽象語(yǔ)法
4.1語(yǔ)義動(dòng)作
4.1.1 遞歸下降
4.1.2 Yacc生成的分析器
4.1.3語(yǔ)義動(dòng)作的解釋器
4.2抽象語(yǔ)法分析樹(shù)
4.2.1位置
4.2.2 Tiger的抽象語(yǔ)法
程序設(shè)計(jì):抽象語(yǔ)法
推薦閱讀
習(xí)題
第5章 語(yǔ)義分析
5.1 符號(hào)表
5.1.1多個(gè)符號(hào)表
5.1.2高效的命令式風(fēng)格符號(hào)表
5.1.3高效的函數(shù)式符號(hào)表
5.1.4 Tiger編譯器的符號(hào)
5.1.5函數(shù)式風(fēng)格的符號(hào)表
5.2 Tiger編譯器的綁定
5.3表達(dá)式的類型檢查
5.4聲明的類型檢查
5.4.1變量聲明
5.4.2類型聲明
5.4.3函數(shù)聲明
5.4.4遞歸聲明
程序設(shè)計(jì):類型檢查
習(xí)題
第6章 活動(dòng)記錄
6.1 棧幀
6.1.1 幀指針
6.1.2寄存器
6.1.3參數(shù)傳遞
6.1.4返回地址
6.1.5棧幀內(nèi)的變量
6.1.6靜態(tài)鏈
6.2 Tiger編譯器的棧幀
6.2.1棧幀描述的表示
6.2.2局部變量
6.2.3計(jì)算逃逸變量
6.2.4臨時(shí)變量和標(biāo)號(hào)
6.2.5兩層抽象
6.2.6管理靜態(tài)鏈
6.2.7追蹤層次信息
程序設(shè)計(jì):棧幀
推薦閱讀
習(xí)題
第7章 翻譯成中間代碼
7.1中間表示樹(shù)
7.2翻譯為樹(shù)中間語(yǔ)言
7.2.1表達(dá)式的種類
7.2.2簡(jiǎn)單變量
7.2.3追隨靜態(tài)鏈
7.2.4數(shù)組變量
7.2.5結(jié)構(gòu)化的左值
7.2.6下標(biāo)和域選擇
7.2.7關(guān)于安全性的勸告
7.2.8算術(shù)操作
7.2.9條件表達(dá)式
7.2.10字符串
7.2.11記錄和數(shù)組的創(chuàng)建
7.2.12 while循環(huán)
7.2.13 for循環(huán)
7.2.14函數(shù)調(diào)用
7.3聲明
7.3.1變量定義
7.3.2函數(shù)定義
程序設(shè)計(jì):翻譯成樹(shù)
習(xí)題
第8章 基本塊和軌跡
8.1規(guī)范樹(shù)
8.1.1 ESEQ的轉(zhuǎn)換
8.1.2一般重寫(xiě)規(guī)則
8.1.3將cALL移到頂層
8.1.4線性語(yǔ)句表
8.2處理?xiàng)l件分支
8.2.1基本塊
8.2.2軌跡
8.2.3完善
8.2.4最優(yōu)軌跡
推薦閱讀
習(xí)題
第9章 指令選擇
9.1指令選擇算法
9.1.1 Maximal Munch算法
9.1.2動(dòng)態(tài)規(guī)劃
9.1.3樹(shù)文法
9.1.4快速匹配
9.1.5覆蓋算法的效率
9.2 CIS(:機(jī)器
9.3 Tiger編譯器的指令選擇
9.3.1抽象的匯編語(yǔ)言指令
9.3.2生成匯編指令
9.3.3過(guò)程調(diào)用
9.3.4無(wú)幀指針的情形
程序設(shè)計(jì):指令選擇
推薦閱讀
習(xí)題
第10章 活躍分析
10.1數(shù)據(jù)流方程的解
10.1.1活躍性計(jì)算
10.1.2集合的表示
10.1.3時(shí)間復(fù)雜度
10.1.4最小不動(dòng)點(diǎn)
10.1.5靜態(tài)活躍性與動(dòng)態(tài)活躍性
10.1.6 沖突圖
10.2 Tiger編譯器的活躍分析
10.2.1 圖
10.2.2控制流圖
10.2.3活躍分析
程序設(shè)計(jì):構(gòu)造流圖
程序設(shè)計(jì):活躍分析模塊
習(xí)題一
第11章 寄存器分配
11.1通過(guò)簡(jiǎn)化進(jìn)行著色
11.2合并一
11.3預(yù)著色的結(jié)點(diǎn)
11.3.1機(jī)器寄存器的臨時(shí)副本
11.3.2調(diào)用者保護(hù)的寄存器和
被調(diào)用者保護(hù)的寄存器
11.3.3含預(yù)著色結(jié)點(diǎn)的例子
11.4圖著色的實(shí)現(xiàn)
11.4.1傳送指令工作表的管理
11.4.2數(shù)據(jù)結(jié)構(gòu)
11.4.3程序代碼
11.5針對(duì)樹(shù)的寄存器分配
程序設(shè)計(jì):圖著色
推薦閱讀一
習(xí)題
第12章 整合為一體
程序設(shè)計(jì):過(guò)程入口/出口
程序設(shè)計(jì):創(chuàng)建一個(gè)可運(yùn)行的編譯器
第二部分高級(jí)主題
第13章 垃圾收集
13.1標(biāo)記一清掃式收集
13.2引用計(jì)數(shù)
13.3復(fù)制式收集
13.4分代收集
13.5增量式收集
13.6 Baker算法
13.7編譯器接口
13.7.1快速分配
13.7.2數(shù)據(jù)布局的描述
13.7.3導(dǎo)出指針
程序設(shè)計(jì):描述字
程序設(shè)計(jì):垃圾收集
推薦閱讀
習(xí)題
第14章 面向?qū)ο蟮恼Z(yǔ)言
14.1類
14.2數(shù)據(jù)域的單繼承性
14.3多繼承
14.4測(cè)試類成員關(guān)系
14.5私有域和私有方法
14.6無(wú)類語(yǔ)言
14.7面向?qū)ο蟪绦虻膬?yōu)化
程序設(shè)計(jì):OBJE~~:T—Tigei’
推薦閱讀
習(xí)題
第15章 函數(shù)式程序設(shè)計(jì)語(yǔ)言
15.1一個(gè)簡(jiǎn)單的函數(shù)式語(yǔ)言
15.2閉包
15.3不變的變量
15.3.1基于延續(xù)的L/O
15.3.2語(yǔ)言上的變化
15.3.3純函數(shù)式語(yǔ)言的優(yōu)化
15.4內(nèi)聯(lián)擴(kuò)展
15.5閉包變換
15.6高效的尾遞歸
15.7懶惰計(jì)算
15.7.1傳名調(diào)用計(jì)算
15.7.2按需調(diào)用
15.7.3懶惰程序的計(jì)算
15.7.4懶惰函數(shù)式程序的優(yōu)化
15.7.5嚴(yán)格性分析
推薦閱讀
程序設(shè)計(jì):編譯函數(shù)式語(yǔ)言
習(xí)題
第16章 多態(tài)類型
16.1參數(shù)多態(tài)性
16.1.1 顯式帶類型的多態(tài)語(yǔ)言
16.1.2多態(tài)類型的檢查
16.2類型推論
16.2.1一個(gè)隱式類型的多態(tài)語(yǔ)言
16.2.2類型推論算法
16.2.3遞歸的數(shù)據(jù)類型
16.2.4 HindleyMilner類型的能力
16.3多態(tài)變量的表示一
16.3.1多態(tài)函數(shù)的擴(kuò)展一
16.3.2完全的裝箱轉(zhuǎn)換一
16.3.3基于強(qiáng)制的表示分析”
16.3.4將類型作為運(yùn)行時(shí)參數(shù)
傳遞一
16.4靜態(tài)重載的解決方法一
推薦閱讀
習(xí)題
第17章 數(shù)據(jù)流分析
17.1流分析使用的中間表示
17.2各種數(shù)據(jù)流分析
17.2.1到達(dá)定值
17.2.2可用表達(dá)式
17.2.3到達(dá)表達(dá)式
17.2.4活躍分析
17.3使用數(shù)據(jù)流分析結(jié)果的幾種
轉(zhuǎn)換
17.3.1公共子表達(dá)式刪除
17.3.2常數(shù)傳播
17.3.3復(fù)寫(xiě)傳播
17.3.4死代碼刪除
17.4加快數(shù)據(jù)流分析
17.4.1位向量
17.4.2基本塊
17.4.3結(jié)點(diǎn)排序
17.4.4使用一定值鏈和定值一
使用鏈
17.4.5工作表算法
17.4.6增量式數(shù)據(jù)流分析
17.5別名分析
17.5.1基于類型的別名分析
17.5.2基于流的別名分析
17.5.3使用可能別名信息
17.5.4嚴(yán)格的純函數(shù)式語(yǔ)言中的
別名分析
推薦閱讀
習(xí)題
第18章 循環(huán)優(yōu)化
18.1 必經(jīng)結(jié)點(diǎn)
18.1.1尋找必經(jīng)結(jié)點(diǎn)的算法
18.1.2直接必經(jīng)結(jié)點(diǎn)
18.1.3循環(huán)
18.1.4循環(huán)前置結(jié)點(diǎn)
18.2循環(huán)不變量計(jì)算
18.3歸納變量
18.3.1發(fā)現(xiàn)歸納變量
18.3.2強(qiáng)度削弱
18.3.3刪除
18.3.4重寫(xiě)比較
18.4數(shù)組邊界檢查
18.5循環(huán)展開(kāi)
推薦閱讀
習(xí)題
第19章 靜態(tài)單賦值形式
19.1轉(zhuǎn)化為SSA形式一
19.1.1插入西函數(shù)的標(biāo)準(zhǔn)一
19.1.2必經(jīng)結(jié)點(diǎn)邊界一
19.1.3插入φ函數(shù)
19.1.4變量重命名
19.1.5邊分割
19.2必經(jīng)結(jié)點(diǎn)樹(shù)的高效計(jì)算
19.2.1深度優(yōu)先生成樹(shù)
19.2.2半必經(jīng)結(jié)點(diǎn)
19.2.3 LengauerTarjan算法
19.3使用SSA的優(yōu)化算法
19.3.1死代碼刪除
19.3.2簡(jiǎn)單的常數(shù)傳播
19.3.3條件常數(shù)傳播
19.3.4保持必經(jīng)結(jié)點(diǎn)性質(zhì)
19.4數(shù)組、指針和存儲(chǔ)器
19.5控制依賴圖
19.6從SSA形式轉(zhuǎn)變回來(lái)
19.7函數(shù)式中間形式
推薦閱讀
習(xí)題
第20章 流水和調(diào)度
20.1 沒(méi)有資源約束時(shí)的循環(huán)調(diào)度
20.2有資源約束的循環(huán)流水
20.2.1模調(diào)度
20.2.2尋找最小的啟動(dòng)間距
20.2.3其他控制流
20.2.4編譯器應(yīng)該調(diào)度指令嗎
20.3分支預(yù)測(cè)
20.3.1靜態(tài)分支預(yù)測(cè)
20.3.2編譯器應(yīng)該預(yù)測(cè)分支嗎
推薦閱讀
習(xí)題
第21章 存儲(chǔ)層次
21.1 cache的組織結(jié)構(gòu)
21.2 cache塊對(duì)齊
21.3預(yù)取
21.4循環(huán)交換
21.5分塊一
21.6垃圾收集和存儲(chǔ)層次
推薦閱讀一
習(xí)題
附錄Tiger語(yǔ)言參考手冊(cè)
參考文獻(xiàn)
索引~
免責(zé)聲明:
來(lái)源于網(wǎng)絡(luò),僅用于分享知識(shí),學(xué)習(xí)和交流!請(qǐng)下載完在24小時(shí)內(nèi)刪除。
禁用于商業(yè)用途!請(qǐng)購(gòu)買正版,謝謝合作。
使用說(shuō)明
1、下載并解壓,得出pdf文件
2、如果在電腦上打不開(kāi)pdf文件,別著急,那么您需要先在電腦上下載一個(gè)pdf閱讀軟件
3、有pdf閱讀文件直接雙擊即可打開(kāi)pdf文件
- 下載地址
- 本地下載通道:
- 浙江電信下載
- 北京聯(lián)通下載
- 江蘇電信下載
- 廣東電信下載
有問(wèn)題? 點(diǎn)此報(bào)錯(cuò)
發(fā)表評(píng)論
0條評(píng)論軟件排行榜
熱門推薦
- 南方Plus電腦版 v11.8.027.22M / 簡(jiǎn)體中文
- 得間免費(fèi)小說(shuō)電腦版 v5.2.7.172.56M / 簡(jiǎn)體中文
- 網(wǎng)易新聞電腦版 v112.697.63M / 簡(jiǎn)體中文
- 數(shù)據(jù)挖掘?qū)д?官方版61.61M / 簡(jiǎn)體中文
- 吉利博瑞用戶手冊(cè) pdf高清版57.89M / 簡(jiǎn)體中文
- 京東讀書(shū)電腦版 v1.13.4官方版1.98M / 簡(jiǎn)體中文
- cnki全球?qū)W術(shù)快報(bào)電腦版 v0.2.3495.79M / 簡(jiǎn)體中文
- linux常用命令大全 chm版1.48M / 簡(jiǎn)體中文
- 本草綱目 5.34M / 簡(jiǎn)體中文
- HotSpot實(shí)戰(zhàn)(陳濤著) 中文pdf掃描版82M / 簡(jiǎn)體中文