現代編譯原理 C語言描述 修訂版 ( 簡體 字) |
作者:[美]安德魯·W.安佩爾(Andrew W.Appel),馬亞·金斯伯格(Maia Ginsburg) | 類別:1. -> 程式設計 -> 組合語言/編譯原理 -> 編譯原理 |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 48836 詢問書籍請說出此書號!【缺書】 NT售價: 445 元 |
出版日:4/1/2018 |
頁數:385 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115476883 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書全面講述了現代編譯器的各個組成部分,包括詞法分析、語法分析、抽象語法、語義檢查、中間代碼表示、指令選擇、數據流分析、寄存器分配以及運行時系統等。全書分成兩部分,* 一部分是編譯的基礎知識,適用于* 一門編譯原理課程(一個學期);* 二部分是高 級主題,包括面向對象語言和函數語言、垃圾收集、循環優化、存儲結構優化等,適合于后續課程或研究生教學。書中專門為學生提供了一個用C語言編寫的實習項目,包括前端和后端設計,學生可以在一學期內創建功能完整的編譯器。 |
目錄:* 一部分 編譯基本原理 * 1章 緒論 1 1.1 模塊與接口 1 1.2 工具和軟件 3 1.3 樹語言的數據結構 3 程序設計:直線式程序解釋器 7 推薦閱讀 8 習題 9 * 2章 詞法分析 10 2.1 詞法單詞 10 2.2 正則表達式 11 2.3 有限自動機 13 2.4 非確定有限自動機 15 2.5 Lex:詞法分析器的生成器 20 程序設計:詞法分析 22 推薦閱讀 23 習題 23 第3章 語法分析 27 3.1 上下文無關文法 28 3.2 預測分析 32 3.3 LR分析 39 3.4 使用分析器的生成器 48 3.5 錯誤恢復 54 程序設計:語法分析 57 推薦閱讀 58 習題 58 第4章 抽象語法 62 4.1 語義動作 62 4.2 抽象語法分析樹 65 程序設計:抽象語法 71 推薦閱讀 71 習題 72 第5章 語義分析 73 5.1 符號表 73 5.2 Tiger編譯器的綁定 79 5.3 表達式的類型檢查 82 5.4 聲明的類型檢查 84 程序設計:類型檢查 86 習題 87 第6章 活動記錄 89 6.1 棧幀 90 6.2 Tiger編譯器的棧幀 96 程序設計:棧幀 102 推薦閱讀 103 習題 103 第7章 翻譯成中間代碼 106 7.1 中間表示樹 106 7.2 翻譯為樹中間語言 108 7.3 聲明 120 程序設計:翻譯成樹 122 習題 123 第8章 基本塊和軌跡 125 8.1 規范樹 126 8.2 處理條件分支 131 推薦閱讀 134 習題 134 第9章 指令選擇 136 9.1 指令選擇算法 138 9.2 CISC機器 144 9.3 Tiger編譯器的指令選擇 146 程序設計:指令選擇 152 推薦閱讀 153 習題 154 * 10章 活躍分析 155 10.1 數據流方程的解 156 10.2 Tiger編譯器的活躍分析 162 程序設計:構造流圖 164 程序設計:活躍分析模塊 165 習題 165 * 11章 寄存器分配 166 11.1 通過簡化進行著色 166 11.2 合并 168 11.3 預著色的結點 171 11.4 圖著色的實現 175 11.5 針對樹的寄存器分配 181 程序設計:圖著色 184 推薦閱讀 185 習題 185 * 12章 整合為一體 188 程序設計:過程入口/出口 189 程序設計:創建一個可運行的編譯器 191 * 二部分 高 級主題 * 13章 垃圾收集 193 13.1 標記-清掃式收集 194 13.2 引用計數 197 13.3 復制式收集 198 13.4 分代收集 201 13.5 增量式收集 203 13.6 Baker算法 205 13.7 編譯器接口 205 程序設計:描述字 208 程序設計:垃圾收集 208 推薦閱讀 208 習題 210 * 14章 面向對象的語言 211 14.1 類 211 14.2 數據域的單繼承性 213 14.3 多繼承 214 14.4 測試類成員關系 216 14.5 私有域和私有方法 218 14.6 無類語言 219 14.7 面向對象程序的優化 219 程序設計:OBJECT-Tiger 220 推薦閱讀 220 習題 221 * 15章 函數式程序設計語言 222 15.1 一個簡單的函數式語言 222 15.2 閉包 224 15.3 不變的變量 225 15.4 內聯擴展 229 15.5 閉包變換 233 15.6 高效的尾遞歸 235 15.7 懶惰計算 236 推薦閱讀 243 程序設計:編譯函數式語言 244 習題 244 * 16章 多態類型 246 16.1 參數多態性 246 16.2 類型推論 253 16.3 多態變量的表示 259 16.4 靜態重載的解決方法 265 推薦閱讀 266 習題 266 * 17章 數據流分析 269 17.1 流分析使用的中間表示 270 17.2 各種數據流分析 271 17.3 使用數據流分析結果的幾種轉換 274 17.4 加快數據流分析 276 17.5 別名分析 281 推薦閱讀 285 習題 285 * 18章 循環優化 287 18.1 必經結點 289 18.2 循環不變量計算 292 18.3 歸納變量 293 18.4 數組邊界檢查 297 18.5 循環展開 300 推薦閱讀 301 習題 301 * 19章 靜態單賦值形式 303 19.1 轉化為SSA形式 305 19.2 必經結點樹的高效計算 310 19.3 使用SSA的優化算法 315 19.4 數組、指針和存儲器 320 19.5 控制依賴圖 321 19.6 從SSA形式轉變回來 323 19.7 函數式中間形式 324 推薦閱讀 327 習題 328 * 20章 流水和調度 331 20.1 沒有資源約束時的循環調度 332 20.2 有資源約束的循環流水 336 20.3 分支預測 341 推薦閱讀 343 習題 343 * 21章 存儲層次 346 21.1 cache的組織結構 346 21.2 cache塊對齊 349 21.3 預取 350 21.4 循環交換 354 21.5 分塊 355 21.6 垃圾收集和存儲層次 357 推薦閱讀 358 習題 358 附錄 Tiger語言參考手冊 360 參考文獻 368 索引 376 |
序: |