可變目標C編譯器:設計與實現 pdf epub mobi txt 電子書 下載 2024
圖書介紹
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
發表於2024-12-24
類似圖書 點擊查看全場最低價
齣版社: 機械工業齣版社
ISBN:9787111552581
版次:1
商品編碼:12010573
品牌:機工齣版
包裝:平裝
叢書名: 計算機科學叢書
開本:16開
齣版時間:2016-11-01
用紙:膠版紙
頁數:423
可變目標C編譯器:設計與實現 epub 下載 mobi 下載 pdf 下載 txt 電子書 下載 2024
相關圖書
可變目標C編譯器:設計與實現 epub 下載 mobi 下載 pdf 下載 txt 電子書 下載 2024
可變目標C編譯器:設計與實現 pdf epub mobi txt 電子書 下載
具體描述
內容簡介
本書係統地介紹瞭可變目標ANSIC編譯器lcc的設計方法和實現技術。lcc是一個實用的編譯器,能夠為不同的目標機器(如MIPSR3000、SPARC、Intel386及其後續産品)生成代碼。本書結閤lcc的具體實現,詳細講述瞭存儲管理、符號錶、詞法分析、語法分析、中間代碼生成、優化、目標代碼産生等編譯程序的各個部分。全書共分19章,各章之後均附有練習。本書特色鮮明,實用性強,適閤作為高等院校計算機專業的編譯原理課程的教材或參考書,對從事編譯相關工作的技術人員也有很好的參考價值。
目錄
A Retargetable C Compiler: Design and Implementation
齣版者的話
譯者序
前言
第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章 MIPS R3000代碼的生成 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
前言/序言
前 言 A Retargetable C Compiler: Design and Implementation 編譯器是程序員使用的關鍵工具,程序員每天都在使用編譯器,並且非常依賴於其正確性和可靠性。編譯器必須接受程序語言的所有標準定義,以便源代碼可以實現跨平颱的可移植性。編譯器必須生成高效的目標代碼,但更重要的是,編譯器必須生成正確的目標代碼,隻有可靠的編譯器纔能生成可靠的應用程序。 編譯器本身是一個大而復雜的應用程序,值得我們深入分析研究。本書介紹瞭ANSI C語言編譯器lcc的大部分實現,對編譯器的介紹方式與B. W. Kernighan和P. J. Plauger閤著的《Software Tools》(Addison-Wesley,1976)一書對文本處理(例如文本編輯和宏處理)的介紹類似。研究實用的工具軟件,是學習軟件設計和實現技術的最好方法。本書在代碼級詳細介紹瞭一個實用的編譯器,該編譯器的完整源代碼可在ftp.cs.princeton.edu(128.112.152.13)服務器的pub/lcc目錄下,通過匿名ftp服務得到。 lcc不是一個研究係統,而是一個實用的編譯器産品。從1988年開始,lcc就用於編譯實際程序,現在每天都有數百名C程序員在使用它。由於本書詳細分析瞭lcc編譯器的設計與實現,因此用於介紹相關支撐材料的篇幅較少,僅展示瞭涉及的理論知識,而更為係統的編譯技術的介紹可以參見其他教材。本書有意省略一些涉及瑣碎和重復實現的語言特徵,而將這部分內容作為練習。 顯然,本書將使讀者對編譯器的構造有更多的瞭解。然而隻有少數程序員需要瞭解編譯器的設計與實現,大多數程序員從事的是應用程序或其他係統程序的開發。但是,基於以下4個原因,大多數C程序員都可以從本書中受益。 第一,一般來說,如果程序員能夠理解C編譯器的工作原理,通常可以成為較好的程序員,特彆是較好的C程序員。編譯器設計者必須全麵準確地理解C語言的每一個特性,程序員通過學習這些特性的實現,能夠更好地掌握語言本身及其在現代計算機上的高效實現。 第二,大多數程序設計教材都是通過一些精簡的示例來說明編程技巧的,但大多數程序員都是在從事大型程序的開發,在開發過程中需要不斷修改程序,很少有帶詳細說明的示例可以作為大型程序設計的參考。lcc不是完美的,但是本書詳細說明瞭該程序的優缺點,可以作為大型程序開發的參考。 第三,編譯器是計算機科學中理論與實踐相結閤的最好典範。lcc展示瞭理論與實踐的相互作用及其精美的結果,展示瞭實踐需求牽引理論的發展,這些都可以清楚地從代碼中找到。通過一個真實的程序來研究這些相互作用,可以幫助程序員理解何時、何地以及如何運用不同的技術。此外,lcc也闡明瞭眾多的C編程技術。 第四,這本書本身是一個文本程序(literate program),如同D. E. Knuth所著的《TeX: The Program》(Addison-Wesley,1986)一樣,本書包括lcc的源代碼及說明。為瞭方便讀者理解,本書並未按源程序的順序對程序代碼進行講解,而是有意進行瞭調整。 無論是對於在校學生還是專業技術人員,本書都非常適閤自學使用。本書為lcc提供瞭說明完整的源代碼,希望進行編譯技術實踐的人員,以及在需要使用或實現基於語言的工具和技術的應用領域(如用戶接口)中工作的專業人員,將會對本書感興趣。lcc的相關信息可通過以下地址獲得:www.cs.princeton.edu/software/lcc。 本書全麵而真實地展示瞭一個大型軟件係統,可作為軟件工程課程的分析實例。 對於編譯課程來說,本書彌補瞭傳統編譯教材的不足。本書介紹瞭C編譯器的一種實現方法,而傳統教材主要介紹編譯過程中遇到的各種問題的解決算法,因此傳統教材受篇幅限製隻能介紹一些實驗性的編譯器,代碼生成也通常麵嚮較高的級彆,以避免與具體的機器相關。 因此,許多教師要求學生完成接近實際的編譯器項目,使學生獲得實踐經驗。通常,教師必須從頭開始編寫編譯程序,而學生復製其中的大部分,修改後利用其餘的部分。然而,由於編譯器隻是實驗性的,文檔往往顯得不夠充分,這種情形使教學雙方都不滿意。本書通過對一個實際編譯器的大部分程序進行文檔說明,並提供源代碼,為教師提供瞭一種新的選擇。 本書介紹瞭完整的代碼生成器,代碼生成麵嚮MIPS R3000、SPARC和Intel 386及其後續體係結構等不同的平颱。本書利用瞭最新的研究成果,根據目標機器的緊縮規範(compact specification)生成代碼生成器。這些方法使得我們能夠針對多種機器展示完整的代碼生成器,這是其他書籍無法做到的。通過介紹多個代碼生成器,既避免瞭本書依賴於單一的機器,又有助於學生瞭解如何設計可變目標的軟件。 教師布置的作業可以是增加編譯器接受的語言特徵、優化、改變目標機器等。本書如果與傳統教材配閤使用,也可以要求學生使用不同的算法代替現有的模塊作為實踐作業。如果以實現一個實驗編譯器作為實踐作業,則可能在低級基礎結構和重復的語言特徵上花費大量的時間。采取上述方法,就能夠更接近實際的編譯器工程實踐。本書的許多練習都涉及編譯器工程問題。
可變目標C編譯器:設計與實現 下載 mobi epub pdf txt 電子書
可變目標C編譯器:設計與實現 pdf epub mobi txt 電子書 下載
用戶評價
評分
☆☆☆☆☆
不錯
評分
☆☆☆☆☆
內容專業,印刷質量好。
評分
☆☆☆☆☆
編譯原理,要好好搞懂,這樣。。 纔好。
評分
☆☆☆☆☆
盜版書籍,上瞭200減100
評分
☆☆☆☆☆
盜版書籍,上瞭200減100
評分
☆☆☆☆☆
書不錯,剛收到,備用,正版速度快
評分
☆☆☆☆☆
還沒有看,看過部分後,再來追評
評分
☆☆☆☆☆
內容專業,印刷質量好。
評分
☆☆☆☆☆
書不錯,買來作為技術儲備,以後有時間瞭慢慢看。。。。。。。。。。。。。。
類似圖書 點擊查看全場最低價
可變目標C編譯器:設計與實現 pdf epub mobi txt 電子書 下載