注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)編譯器之旅:打造自己的編程語言(微課視頻版)

編譯器之旅:打造自己的編程語言(微課視頻版)

編譯器之旅:打造自己的編程語言(微課視頻版)

定 價(jià):¥59.00

作 者: 于東亮
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302667223 出版時(shí)間: 2024-08-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書以簡單的算法、清晰的架構(gòu),講述了把高級語言轉(zhuǎn)化成Linux程序的全過程,以及其中蘊(yùn)含的數(shù)學(xué)原理。本書共11章,按照源碼編譯的順序分為入門篇和進(jìn)階篇。入門篇(第1~4章)詳細(xì)介紹了詞法分析、語法分析、語義分析,涵蓋了編譯器前端的所有內(nèi)容。進(jìn)階篇(第5~11章)進(jìn)一步說明了怎么把抽象語法樹轉(zhuǎn)化成可執(zhí)行程序的全過程,包含了三地址碼的生成、中間代碼優(yōu)化、寄存器分配、機(jī)器碼的生成、ELF文件格式、連接器和虛擬機(jī)的實(shí)現(xiàn)。第12章記錄了作者對泛編譯器問題的進(jìn)一步思考。本書適合初學(xué)者入門編譯原理,也可用于資深程序員在發(fā)明一門新語言時(shí)的技術(shù)資料,并可用作高等院校和培訓(xùn)機(jī)構(gòu)的教學(xué)參考書。

作者簡介

  于東亮,SCF編譯器作者,資深C程序員和FFmpeg工程師,畢業(yè)于天津大學(xué),長期從事Linux下的編程工作。先后制作了“C語言技術(shù)內(nèi)幕”“Linux環(huán)境的編程詳解”“怎么用C語言寫一個(gè)簡單EDA”“編譯器入門”等原創(chuàng)視頻合集。本書為作者的第一部實(shí)體書,以SCF編譯器為例講述了一門高級語言的發(fā)明過程。

圖書目錄

入門篇
第1章編譯器簡介(19min)3
1.1編程語言的發(fā)展史3
1.2編譯器在IT行業(yè)里的核心地位3
1.3編譯器的代碼架構(gòu)4
第2章詞法分析(34min)7
2.1“理想語言”的詞法分析7
2.2實(shí)際編程語言的詞法擴(kuò)展8
2.2.1編程語言的標(biāo)志符9
2.2.2關(guān)鍵字9
2.2.3數(shù)字10
2.2.4數(shù)據(jù)結(jié)構(gòu)11
2.3詞法分析的數(shù)學(xué)解釋12
第3章語法分析(123min)14
3.1語句類型的劃分14
3.2語句的嵌套和遞歸分析16
3.2.1變量聲明語句的分析16
3.2.2類型定義語句的分析17
3.2.3順序塊的分析18
3.2.4表達(dá)式的分析18
3.2.5運(yùn)算符的優(yōu)先級和結(jié)合性19
3.2.6表達(dá)式樹的構(gòu)造步驟20
3.2.7完整的抽象語法樹20
3.2.8抽象語法樹的數(shù)據(jù)結(jié)構(gòu)21
3.2.9變量和類型的數(shù)據(jù)結(jié)構(gòu)22
3.2.10變量的語法檢查23
3.2.11星號和乘法的區(qū)分24
3.3語法的靈活編輯和有限自動機(jī)框架24
3.3.1有限自動機(jī)的簡介24
3.3.2語法的編輯25
3.3.3編程語言的語法圖26
3.3.4SCF框架怎么實(shí)現(xiàn)“遞歸”27
3.3.5語法分析框架的模塊上下文29
3.3.6for循環(huán)的語法分析模塊30
3.3.7小括號的多種含義36
3.4語法分析的數(shù)學(xué)解釋36
第4章語義分析(72min)38
4.1類型檢查38
4.2語義分析框架40
4.2.1語義分析的回調(diào)函數(shù)40
4.2.2語義分析中的遞歸43
4.3運(yùn)算符重載46
4.3.1運(yùn)算符重載的實(shí)現(xiàn)46
4.3.2函數(shù)調(diào)用47
4.3.3重載函數(shù)的查找47
4.3.4代碼實(shí)現(xiàn)48
4.3.5SCF編譯器的類對象51
4.4new關(guān)鍵字51
4.5多值函數(shù)55
4.5.1應(yīng)用程序二進(jìn)制接口56
4.5.2語法層面的支持56
4.5.3語義層面的支持57
進(jìn)階篇
第5章三地址碼的生成(84min)63
5.1回填技術(shù)63
5.1.1回填的數(shù)據(jù)結(jié)構(gòu)63
5.1.2三地址碼的數(shù)據(jù)結(jié)構(gòu)64
5.1.3回填的步驟65
5.2ifelse的三地址碼65
5.3循環(huán)的入口和出口68
5.4指針與數(shù)組的賦值72
5.5new關(guān)鍵字的三地址碼74
5.6跳轉(zhuǎn)的優(yōu)化77
5.6.1跳轉(zhuǎn)的優(yōu)化簡介77
5.6.2邏輯運(yùn)算符的短路優(yōu)化78
5.6.3死代碼消除80
5.6.4代碼實(shí)現(xiàn)80
第6章基本塊的劃分(19min)83
6.1比較、跳轉(zhuǎn)導(dǎo)致的基本塊劃分83
6.2函數(shù)調(diào)用84
6.3基本塊的流程圖84
第7章中間代碼優(yōu)化(100min)86
7.1代碼框架86
7.2內(nèi)聯(lián)函數(shù)88
7.3有向無環(huán)圖93
7.3.1公共子表達(dá)式93
7.3.2數(shù)據(jù)結(jié)構(gòu)94
7.3.3有向無環(huán)圖的生成95
7.4圖的搜索算法97
7.4.1基本塊的數(shù)據(jù)結(jié)構(gòu)97
7.4.2寬度優(yōu)先搜索98
7.4.3深度優(yōu)先搜索99
7.5指針分析100
7.5.1指針解引用的分析100
7.5.2數(shù)組和結(jié)構(gòu)體的指針分析106
7.6跨函數(shù)的指針分析109
7.7變量活躍度分析114
7.7.1變量的活躍度114
7.7.2單個(gè)基本塊的變量活躍度分析115
7.7.3基本塊流程圖上的分析117
7.7.4代碼實(shí)現(xiàn)118
7.8自動內(nèi)存管理120
7.9DAG優(yōu)化125
7.9.1無效運(yùn)算125
7.9.2相同子表達(dá)式的判斷126
7.9.3出口活躍變量的優(yōu)化126
7.9.4后 的優(yōu)化127
7.9.5邏輯運(yùn)算符的優(yōu)化127
7.9.6DAG優(yōu)化的代碼實(shí)現(xiàn)128
7.10循環(huán)分析133
7.10.1循環(huán)的識別133
7.10.2循環(huán)的優(yōu)化138
第8章寄存器分配(23min)143
8.1不同CPU架構(gòu)的寄存器組143
8.2變量之間的沖突144
8.3圖的著色算法148
8.3.1簡單著色算法148
8.3.2改進(jìn)的著色算法150
第9章機(jī)器碼的生成(103min)155
9.1RISC架構(gòu)的優(yōu)勢155
9.2寄存器溢出155
9.2.1寄存器的數(shù)據(jù)結(jié)構(gòu)156
9.2.2寄存器的沖突156
9.2.3寄存器的溢出158
9.3X86_64的機(jī)器碼生成158
9.3.1X86_64的機(jī)器指令158
9.3.2機(jī)器碼的生成160
9.3.3目標(biāo)文件176
9.4ARM64的機(jī)器碼生成180
9.4.1指令特點(diǎn)180
9.4.2機(jī)器碼生成181
第10章ELF格式和可執(zhí)行程序的連接(94min)184
10.1ELF格式184
10.1.1文件頭184
10.1.2節(jié)頭表186
10.1.3程序頭表188
10.1.4ELF格式的實(shí)現(xiàn)190
10.2連接器198
10.2.1連接198
10.2.2靜態(tài)連接202
10.2.3動態(tài)連接205
10.2.4編譯器的主流程215
10.3可執(zhí)行文件的運(yùn)行219
10.3.1進(jìn)程創(chuàng)建219
10.3.2程序的加載和運(yùn)行220
10.3.3動態(tài)庫函數(shù)的加載221
10.3.4源代碼的編譯、連接、運(yùn)行222
第11章Naja字節(jié)碼和虛擬機(jī)(67min)224
11.1Naja字節(jié)碼224
11.2虛擬機(jī)229
11.2.1虛擬機(jī)的數(shù)據(jù)結(jié)構(gòu)229
11.2.2虛擬機(jī)的運(yùn)行230
11.2.3動態(tài)庫函數(shù)的加載236
第12章信息編碼的數(shù)學(xué)哲學(xué)239
12.1信息編碼格式的轉(zhuǎn)換239
12.2多項(xiàng)式時(shí)間的算法241
12.3自然指數(shù)e和梯度下降算法241
12.4復(fù)雜問題的簡單解法242

本目錄推薦

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