自己動手寫編譯器、鏈接器 pdf epub mobi txt 電子書 下載 2025
☆☆☆☆☆
簡體網頁||
繁體網頁
王博俊
清華大學齣版社
2015-1-1
0
37.80
平裝
9787302381365
圖書標籤:
編譯原理
編譯器
計算機科學
編譯
C/C++
計算機
鏈接
連接器
喜歡 自己動手寫編譯器、鏈接器 的讀者還喜歡
下載链接在页面底部
點擊這裡下載
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
发表于2025-01-11
自己動手寫編譯器、鏈接器 epub 下載 mobi 下載 pdf 下載 txt 電子書 下載 2025
自己動手寫編譯器、鏈接器 epub 下載 mobi 下載 pdf 下載 txt 電子書 下載 2025
自己動手寫編譯器、鏈接器 pdf epub mobi txt 電子書 下載 2025
圖書描述
《自己動手寫編譯器、鏈接器》講述瞭一個真實編譯器的開發過程,源語言是以C語言為藍本,進行適當簡化定義的一門新語言,稱之為SC語言(簡化的C語言),目標語言是大傢熟悉的Intelx86機器語言。在本書中,讀者將看到從SC語言定義,到SCC編譯器開發的完整過程。本書介紹的SCC編譯器,沒有藉助Lex與Yacc這些編譯器自動生成工具,純手工編寫而成,更便於學習和理解。為瞭生成可以直接運行EXE文件,本書還實現瞭一個鏈接器。讀完本書讀者將知道一門全新的語言如何定義,一個真實的編譯器、鏈接器如何編寫。
本書適閤各類程序員、程序開發愛好者閱讀,也可作為高等院校編譯原理課程的實踐教材。
鄭重聲明:本書源代碼作者已申請版權,僅供讀者用於學習研究之目的。未經作者允許,嚴禁任何組織與個人將其在網絡上傳播或用於商業用途。對於侵權行為,作者保留提起法律訴訟的權利。源代碼相關問題,請與作者聯係。
自己動手寫編譯器、鏈接器 下載 mobi epub pdf txt 電子書
著者簡介
圖書目錄
第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
· · · · · · (
收起)
自己動手寫編譯器、鏈接器 pdf epub mobi txt 電子書 下載
用戶評價
評分
☆☆☆☆☆
上學期上的編譯原理課,感覺學的很枯燥,理論很空洞。在圖書館也看瞭其它一些編譯方麵的書,沒找到特彆閤適的編譯器實驗方麵的書。這本書拿一個完整編譯器來講,稱得上手把手來教寫編譯器,感覺很過癮,也逐步理解編譯原理講的內容怎麼應用瞭。
評分
☆☆☆☆☆
龍書偏重理論,這本書偏重實踐,很喜歡這本書
評分
☆☆☆☆☆
剛開始詞法分析,語法分析,節的數據生成看的還可以,但是到後麵的語義分析和gencode部分太抽象,不得已把代碼down下來,一遍一遍跑自己寫的test,跟蹤函數... 花瞭兩個月時間一天一兩個小時,終於把所有代碼都理解瞭。收獲很大,但是由於其沒有中間代碼,這樣的話導緻在此基礎上的優化很難搞...
評分
☆☆☆☆☆
作者郵箱居然隻會自動迴復。高冷乾脆不留郵箱啊,浪費我寫郵件的時間。這樣的書本來就比較小眾,會給作者寫郵件的大概少之又少。懶得寫瞭,一星不能再多。 -------------------------------------------------------------------------------------------------------// 更新:作者王先生專門迴復瞭,再次感謝王先生。好書,好作者。為我的淺薄道歉。
評分
☆☆☆☆☆
龍書偏重理論,這本書偏重實踐,很喜歡這本書
讀後感
評分
☆☆☆☆☆
书中有几个函数没有给出具体的实现,需要自行填补,部分指针没有初始化造成编译程序的崩溃,但是总体上通俗易懂,适合入门自行学习。在WINDOWS下编写可使用较新的编译器,由于代码书写在vc6.0环境下,在改写过程中能比较好的发现问题.
評分
☆☆☆☆☆
书中有几个函数没有给出具体的实现,需要自行填补,部分指针没有初始化造成编译程序的崩溃,但是总体上通俗易懂,适合入门自行学习。在WINDOWS下编写可使用较新的编译器,由于代码书写在vc6.0环境下,在改写过程中能比较好的发现问题.
評分
☆☆☆☆☆
书中有几个函数没有给出具体的实现,需要自行填补,部分指针没有初始化造成编译程序的崩溃,但是总体上通俗易懂,适合入门自行学习。在WINDOWS下编写可使用较新的编译器,由于代码书写在vc6.0环境下,在改写过程中能比较好的发现问题.
評分
☆☆☆☆☆
評分
☆☆☆☆☆
類似圖書 點擊查看全場最低價
自己動手寫編譯器、鏈接器 pdf epub mobi txt 電子書 下載 2025