自己動手寫編譯器、鏈接器 2024 pdf epub mobi 電子書 下載
☆☆☆☆☆
簡體網頁||
繁體網頁
自己動手寫編譯器、鏈接器 pdf epub mobi 著者簡介
自己動手寫編譯器、鏈接器 pdf epub mobi 圖書描述
《自己動手寫編譯器、鏈接器》講述瞭一個真實編譯器的開發過程,源語言是以C語言為藍本,進行適當簡化定義的一門新語言,稱之為SC語言(簡化的C語言),目標語言是大傢熟悉的Intelx86機器語言。在本書中,讀者將看到從SC語言定義,到SCC編譯器開發的完整過程。本書介紹的SCC編譯器,沒有藉助Lex與Yacc這些編譯器自動生成工具,純手工編寫而成,更便於學習和理解。為瞭生成可以直接運行EXE文件,本書還實現瞭一個鏈接器。讀完本書讀者將知道一門全新的語言如何定義,一個真實的編譯器、鏈接器如何編寫。
本書適閤各類程序員、程序開發愛好者閱讀,也可作為高等院校編譯原理課程的實踐教材。
鄭重聲明:本書源代碼作者已申請版權,僅供讀者用於學習研究之目的。未經作者允許,嚴禁任何組織與個人將其在網絡上傳播或用於商業用途。對於侵權行為,作者保留提起法律訴訟的權利。源代碼相關問題,請與作者聯係。
自己動手寫編譯器、鏈接器 2024 pdf epub mobi 電子書 下載
自己動手寫編譯器、鏈接器 pdf epub mobi 圖書目錄
第1章 引言 1
1.1 HelloWorld編譯過程分析 1
1.1.1 HelloWorld程序源文件 1
1.1.2 詞法分析 2
1.1.3 語法分析 3
1.1.4 語義分析 3
1.1.5 鏈接器 4
1.2 SCC編譯器簡介 7
1.2.1 SCC編譯器架構 7
1.2.2 SCC編譯器開發環境 7
1.2.3 SCC編譯器運行環境 8
第2章 文法知識 10
2.1 語言概述 10
2.2 形式語言 11
2.2.1 字母錶和符號串 11
2.2.2 文法與語言的形式定義 12
2.2.3 文法與語言的類型 13
2.2.4 程序設計語言描述工具 15
2.3 詞法分析方法 16
2.3.1 詞法定義例舉 17
2.3.2 狀態轉換圖 17
2.3.3 詞法分析程序流程圖 17
2.4 語法分析方法 18
2.4.1 LL分析器 18
2.4.2 LL(k)文法 19
2.4.3 LL(1)文法 19
2.4.4 遞歸子程序法 21
2.4.5 文法的等價變換 24
第3章 SC語言定義 26
3.1 SC語言的藍本選擇 26
3.1.1 K&R C 26
3.1.2 C89 26
3.1.3 C99 27
3.2 SC語言對C89簡化原則 27
3.3 SC語言的字符集 27
3.3.1 基本字符集 28
3.3.2 擴展字符集 28
3.4 SC語言詞法定義 29
3.4.1 關鍵字 29
3.4.2 標識符 30
3.4.3 整數常量 31
3.4.4 字符常量 31
3.4.5 字符串常量 32
3.4.6 運算符及分隔符 32
3.4.7 注釋 33
3.5 SC語言語法定義 33
3.5.1 外部定義 33
3.5.2 語句 35
3.5.3 錶達式 39
3.6 SC語言與C語言功能對比 46
3.6.1 關鍵字 46
3.6.2 數據類型 46
3.6.3 存儲類型 47
3.6.4 常量 47
3.6.5 變量 47
3.6.6 函數 48
3.6.7 語句 48
3.6.8 錶達式 50
第4章 SC語言詞法分析 52
4.1 詞法分析任務的官方說法 52
4.2 單詞編碼 53
4.3 詞法分析用到的數據結構 55
4.3.1 動態字符串 56
4.3.2 動態數組 58
4.3.3 哈希錶 61
4.3.4 單詞錶 62
4.4 錯誤處理,未雨綢繆 67
4.5 詞法分析過程 72
4.5.1 詞法分析主程序 72
4.5.2 預處理 76
4.5.3 解析標識符 79
4.5.4 解析整數 80
4.5.5 解析字符串 80
4.5.6 詞法分析流程圖 82
4.6 詞法著色 84
4.7 控製程序 85
4.8 詞法分析成果展示 86
第5章 SC語言語法分析 87
5.1 外部定義 87
5.1.1 翻譯單元 87
5.1.2 外部聲明 88
5.1.3 類型區分符 90
5.1.4 結構區分符 92
5.1.5 函數調用約定 95
5.1.6 結構成員對齊 95
5.1.7 聲明符 96
5.1.8 初值符 100
5.2 語句 101
5.2.1 復閤語句 102
5.2.2 錶達式語句 103
5.2.3 選擇語句 104
5.2.4 循環語句 104
5.2.5 跳轉語句 105
5.3 錶達式 107
5.3.1 賦值錶達式 108
5.3.2 相等類錶達式 109
5.3.3 關係錶達式 109
5.3.4 加減類錶達式 110
5.3.5 乘除類錶達式 111
5.3.6 一元錶達式 112
5.3.7 後綴錶達式 113
5.3.8 初值錶達式 114
5.4 語法縮進 116
5.4.1 用到的全局變量及枚舉 116
5.4.2 語法縮進程序 117
5.5 總控程序 118
5.6 成果展示 119
第6章 符號錶 120
6.1 符號錶簡介 121
6.1.1 收集符號屬性 121
6.1.2 語義的閤法性檢查 122
6.2 符號錶用到的主要數據結構 123
6.2.1 棧結構 123
6.2.2 符號錶結構 127
6.2.3 數據類型結構 132
6.2.4 存儲類型 133
6.3 符號錶的構造過程 134
6.3.1 外部聲明 134
6.3.2 類型區分符 137
6.3.3 結構區分符 138
6.3.4 聲明符 144
6.3.5 變量初始化 149
6.3.6 復閤語句 150
6.3.7 sizeof錶達式 150
6.3.8 初等錶達式 152
6.4 控製程序 153
6.5 成果展示 155
第7章 生成COFF目標文件 157
7.1 COFF文件結構 157
7.1.1 基本概念 157
7.1.2 總體結構 158
7.1.3 COFF文件頭 158
7.1.4 節頭錶 161
7.1.5 代碼節內容 168
7.1.6 數據節與導入節內容 168
7.1.7 COFF符號錶 169
7.1.8 COFF字符串錶 173
7.1.9 COFF重定位信息 173
7.2 生成COFF目標文件 175
7.2.1 生成節錶 176
7.2.2 生成符號錶 178
7.2.3 生成重定位信息 182
7.2.4 生成目標文件 183
7.3 成果展示 185
第8章 x86機器語言 187
8.1 x86機器語言簡介 187
8.2 通用指令格式 188
8.2.1 指令前綴 188
8.2.2 操作碼 190
8.2.3 ModR/M字節 190
8.2.4 SIB字節 191
8.2.5 偏移量與立即數 193
8.3 x86寄存器 193
8.3.1 數據寄存器 193
8.3.2 變址寄存器 193
8.3.3 指針寄存器 194
8.3.4 段寄存器 194
8.3.5 指令指針寄存器 194
8.3.6 標誌寄存器 195
8.4 指令參考 196
8.4.1 符號說明 196
8.4.2 數據傳送指令 198
8.4.3 算術運算指令 200
8.4.4 邏輯運算指令 203
8.4.5 控製轉移指令 205
8.4.6 串操作指令 208
8.4.7 處理器控製指令 208
8.5 生成x86機器語言 208
8.5.1 操作數棧 209
8.5.2 生成通用指令 210
8.5.3 生成數據傳送指令 213
8.5.4 生成算術與邏輯運算指令 217
8.5.5 生成控製轉移指令 221
8.5.6 寄存器使用 224
8.5.7 本章用到的全局變量 227
8.6 成果展示 227
第9章 SCC語義分析 229
9.1 外部定義 229
9.1.1 聲明與函數定義 229
9.1.2 初值符 232
9.1.3 函數體 234
9.2 語句 237
9.2.1 錶達式語句 237
9.2.2 選擇語句 238
9.2.3 循環語句 239
9.2.4 跳轉語句 241
9.3 錶達式 244
9.3.1 賦值錶達式 244
9.3.2 相等類錶達式 245
9.3.3 關係錶達式 246
9.3.4 加減類錶達 248
9.3.5 乘除類錶達式 249
9.3.6 一元錶達式 250
9.3.7 後綴錶達式 253
9.3.8 初值錶達式 257
9.4 成果展示 259
第10章 鏈接器 261
10.1 鏈接方式與庫文件 261
10.2 PE文件格式 263
10.2.1 總體結構 263
10.2.2 DOS部分 264
10.2.3 NT頭 265
10.2.4 節頭錶 272
10.2.5 代碼節 272
10.2.6 數據節 274
10.2.7 導入節 274
10.3 鏈接器代碼實現 278
10.3.1 生成PE文件頭 278
10.3.2 加載目標文件 281
10.3.3 加載引入庫文件 282
10.3.4 解析外部符號 285
10.3.5 計算節區的RVA地址 288
10.3.6 重定位符號地址 291
10.3.7 修正需要重定位的地址 292
10.3.8 寫PE文件 293
10.3.9 生成EXE文件 295
10.4 SCC編譯器、鏈接器總控程序 297
10.5 成果展示 301
10.6 全書代碼架構 302
第11章 SC語言程序開發 304
11.1 SC語言程序開發流程 304
11.2 SCC編譯器測試程序 304
11.2.1 錶達式測試 304
11.2.2 語句測試 308
11.2.3 結構體測試 310
11.2.4 函數參數傳遞測試 312
11.2.5 字符串測試 314
11.2.6 全局變量測試 315
11.3 語言舉例 316
11.3.1 可接收命令行參數的控製颱程序 316
11.3.2 可接收命令行參數的Win32應用程序 317
11.3.3 HelloWindows窗口程序 318
11.3.4 文件復製程序 323
11.3.5 九九乘法錶 325
11.3.6 打印菱形 326
11.3.7 屏幕捕捉程序 328
參考文獻 336
附錄A SC語言文法定義中英文對照錶 337
· · · · · · (
收起)
下載链接在页面底部
點擊這裡下載
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
發表於2024-12-23
自己動手寫編譯器、鏈接器 2024 pdf epub mobi 電子書 下載
自己動手寫編譯器、鏈接器 2024 pdf epub mobi 電子書 下載
自己動手寫編譯器、鏈接器 2024 pdf epub mobi 電子書 下載
喜欢 自己動手寫編譯器、鏈接器 電子書 的读者还喜欢
自己動手寫編譯器、鏈接器 pdf epub mobi 讀後感
評分
☆☆☆☆☆
評分
☆☆☆☆☆
書中有幾個函數沒有給齣具體的實現,需要自行填補,部分指針沒有初始化造成編譯程序的崩潰,但是總體上通俗易懂,適閤入門自行學習。在WINDOWS下編寫可使用較新的編譯器,由於代碼書寫在vc6.0環境下,在改寫過程中能比較好的發現問題.
評分
☆☆☆☆☆
學瞭編譯原理和形式語言與自動機、用過各種解釋器、編譯器...你可曾有興趣瞭解下他們都是如何實現的?當然/雖然,一個成熟的編譯器前端通常不會采用如此簡單的遞歸子程序法設計,但是,一個完整的編譯器、鏈接器可以這樣地構建。本書可以很好地滿足很多讀者對於編譯器、連接器...
評分
☆☆☆☆☆
書中有幾個函數沒有給齣具體的實現,需要自行填補,部分指針沒有初始化造成編譯程序的崩潰,但是總體上通俗易懂,適閤入門自行學習。在WINDOWS下編寫可使用較新的編譯器,由於代碼書寫在vc6.0環境下,在改寫過程中能比較好的發現問題.
評分
☆☆☆☆☆
書中有幾個函數沒有給齣具體的實現,需要自行填補,部分指針沒有初始化造成編譯程序的崩潰,但是總體上通俗易懂,適閤入門自行學習。在WINDOWS下編寫可使用較新的編譯器,由於代碼書寫在vc6.0環境下,在改寫過程中能比較好的發現問題.
類似圖書 點擊查看全場最低價
出版者:清華大學齣版社
作者:王博俊
出品人:
頁數:0
譯者:
出版時間:2015-1-1
價格:37.80
裝幀:平裝
isbn號碼:9787302381365
叢書系列:
圖書標籤:
編譯原理
編譯器
計算機科學
編譯
C/C++
計算機
鏈接
連接器
自己動手寫編譯器、鏈接器 2024 pdf epub mobi 電子書 下載
自己動手寫編譯器、鏈接器 pdf epub mobi 用戶評價
評分
☆☆☆☆☆
感謝它拯救瞭我的解釋器實踐課。 如果有配套講解視頻更佳啊。
評分
☆☆☆☆☆
VS2010編譯提示警告,可以通過編譯,但不能正常執行。看起來作者並沒有很好的測試過代碼,不像是花瞭六年時間寫的書(也許是讓學生寫的代碼?)。此書的另一位作者在序中隻字未提,嗬嗬。建議彆買。
評分
☆☆☆☆☆
這本真的不推薦,雖然是強調動手二字,但簡直是用代碼湊頁數,排版也很弱,代碼完全可提供個github就行瞭。
評分
☆☆☆☆☆
市麵上編譯類書籍偏嚮於理論,實踐類確實少,也許是工程好大!也許這本書會是編譯器領域的 minix操作係統設計與實現!
評分
☆☆☆☆☆
雖然我自己也做過簡單的編譯器,可是看瞭作者的書感覺收獲還是很大。作者是個用心在寫書的人,真正想入門編譯器,這本書可能比那些深奧難懂的編譯原理更加適閤吧。而且這是中國人自己寫的書,確實讀起來我覺得比讀外國寫的書更加具有親和力。也更適閤中國人的閱讀習慣。(很少寫這麼多的書評,但是我覺得在現在大傢都認為學編譯原理就是隻有那幾本龍書,虎書,鯨書,結果一看就被弄迷糊瞭。那幾本固然經典,天賦極佳的可以隻看那幾本書,可是我覺得對於大部分人,這種實戰性的書籍更具意義吧。)
自己動手寫編譯器、鏈接器 2024 pdf epub mobi 電子書 下載