日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
編譯器設計(第2版)圖書
人氣:41

編譯器設計(第2版)

《編譯器設計(第2版)》是編譯器設計領域的經典著作,主要從以下四部分詳解了編譯器的設計過程。及時部分涵蓋編譯器前端設計和建立前端所用工具的設計和構建;第二部分探討從源代碼到編譯器中間形式的映射,考察前...
  • 所屬分類:圖書 >計算機/網絡>硬件 外部設備 維修  
  • 作者:[美][Keith] D. [Cooper] [Linda] [Torczon]
  • 產品參數:
  • 叢書名:--
  • 國際刊號:9787115301949
  • 出版社:人民郵電出版社
  • 出版時間:2013-01
  • 印刷時間:2013-01-01
  • 版次:1
  • 開本:12開
  • 頁數:--
  • 紙張:膠版紙
  • 包裝:平裝
  • 套裝:

內容簡介

《編譯器設計(第2版)》是編譯器設計領域的經典著作,主要從以下四部分詳解了編譯器的設計過程。及時部分涵蓋編譯器前端設計和建立前端所用工具的設計和構建;第二部分探討從源代碼到編譯器中間形式的映射,考察前端為優化器和后端所生成代碼的種類;第三部分介紹代碼優化,同時包含對分析和轉換的進一步處理;第四部分專門講解編譯器后端使用的算法。

《編譯器設計(第2版)》適合作為高等院校計算機專業本科生和研究生編譯課程的教材和參考書,也可供相關技術人員參考。

編輯推薦

深入剖析現代編譯器運用的算法和技術。強調代碼優化和代碼生成。體現編譯原理教學的理念

作者簡介

Keith D. Cooper是萊斯大學的計算工程Doerr講席教授。他研究過編譯后代碼優化領域的大量問題,包括過程間數據流分析及其應用、值編號、代數重新關聯、寄存器分配和指令調度等。他近期的工作專注于從根本上重新考察傳統編譯器的結構和行為。他講授過各種本科生水平的課程,從程序設計入門到研究生水平的代碼優化等。他還是ACM院士。 Linda Torczon是萊斯大學計算機科學系的高級研究科學家,她是PACE(平臺可感知編譯環境)項目的首席研究員,該項目由DARPA(國防高級研究計劃局)贊助,意在開發一種優化編譯器環境,能夠針對新平臺自動地調整其優化機制和策略。從1990年到2000年,Torczon擔任并行計算研究中心的執行總監,該中心是美國國家科學基金會下屬的一個科技中心。她還擔任過HiPerSoft、洛斯阿拉莫斯計算機科學研究所和虛擬網格應用開發軟件項目的執行總監。

目錄

第1章 編譯概觀

1.1 簡介

1.2 編譯器結構

1.3 轉換概述

1.3.1 前端

1.3.2 優化器

1.3.3 后端

1.4 小結和展望

第2章 詞法分析器

2.1 簡介

2.2 識別單詞

2.2.1 識別器的形式化

2.2.2 識別更復雜的單詞

2.3 正則表達式

2.3.1 符號表示法的形式化

2.3.2 示例

2.3.3 RE的閉包性質

2.4 從正則表達式到詞法分析器

2.4.1 非確定性有限自動機

2.4.2 從正則表達式到NFA:Thompson構造法

2.4.3 從NFA到DFA:子集構造法

2.4.4 從DFA到最小DFA:Hopcroft算法

2.4.5 將DFA用做識別器

2.5 實現詞法分析器

2.5.1 表驅動詞法分析器

2.5.2 直接編碼的詞法分析器

2.5.3 手工編碼的詞法分析器

2.5.4 處理關鍵字

2.6 高級主題

2.6.1 從DFA到正則表達式

2.6.2 DFA最小化的另一種方法:Brzozowski算法

2.6.3 無閉包的正則表達式

2.7 小結和展望

第3章 語法分析器

3.1 簡介

3.2 語法的表示

3.2.1 為什么不使用正則表達式

3.2.2 上下文無關語法

3.2.3 更復雜的例子

3.2.4 將語義編碼到結構中

3.2.5 為輸入符號串找到推導

3.3 自頂向下語法分析

3.3.1 為進行自頂向下語法分析而轉換語法

3.3.2 自頂向下的遞歸下降語法分析器

3.3.3 表驅動的LL(1)語法分析器

3.4 自底向上語法分析

3.4.1 LR(1)語法分析算法

3.4.2 構建LR(1)表

3.4.3 表構造過程中的錯誤

3.5 實際問題

3.5.1 出錯恢復

3.5.2 一元運算符

3.5.3 處理上下文相關的二義性

3.5.4 左遞歸與右遞歸

3.6 高級主題

3.6.1 優化語法

3.6.2 減小LR(1)表的規模

3.7 小結和展望

第4章 上下文相關分析

4.1 簡介

4.2 類型系統簡介

4.2.1 類型系統的目標

4.2.2 類型系統的組件

4.3 屬性語法框架

4.3.1 求值的方法

4.3.2 環

4.3.3 擴展實例

4.3.4 屬性語法方法的問題

4.4 特設語法制導轉換

4.4.1 特設語法制導轉換的實現

4.4.2 例子

4.5 高級主題

4.5.1 類型推斷中更困難的問題

4.5.2 改變結合性

4.6 小結和展望

第5章 中間表示

5.1 簡介

5.2 圖IR

5.2.1 與語法相關的樹

5.2.2 圖

5.3 線性IR

5.3.1 堆棧機代碼

5.3.2 三地址代碼

5.3.3 線性代碼的表示

5.3.4 根據線性代碼建立控制流圖

5.4 將值映射到名字

5.4.1 臨時值的命名

5.4.2 靜態單賦值形式

5.4.3 內存模型

5.5 符號表

5.5.1 散列表

5.5.2 建立符號表

5.5.3 處理嵌套的作用域

5.5.4 符號表的許多用途

5.5.5 符號表技術的其他用途

5.6 小結和展望

第6章 過程抽象

6.1 簡介

6.2 過程調用

6.3 命名空間

6.3.1 類Algol語言的命名空間

6.3.2 用于支持類Algol語言的運行時結構

6.3.3 面向對象語言的命名空間

6.3.4 支持面向對象語言的運行時結構

6.4 過程之間值的傳遞

6.4.1 傳遞參數

6.4.2 返回值

6.4.3 確定可尋址性

6.5 標準化鏈接

6.6 高級主題

6.6.1 堆的顯式管理

6.6.2 隱式釋放

6.7 小結和展望

第7章 代碼形式

7.1 簡介

7.2 分配存儲位置

7.2.1 設定運行時數據結構的位置

7.2.2 數據區的布局

7.2.3 將值保持在寄存器中

7.3 算術運算符

7.3.1 減少對寄存器的需求

7.3.2 訪問參數值

7.3.3 表達式中的函數調用

7.3.4 其他算術運算符

7.3.5 混合類型表達式

7.3.6 作為運算符的賦值操作

7.4 布爾運算符和關系運算符

7.4.1 表示

7.4.2 對關系操作的硬件支持

7.5 數組的存儲和訪問

7.5.1 引用向量元素

7.5.2 數組存儲布局

7.5.3 引用數組元素

7.5.4 范圍檢查

7.6 字符串

7.6.1 字符串表示

7.6.2 字符串賦值

7.6.3 字符串連接

7.6.4 字符串長度

7.7 結構引用

7.7.1 理解結構布局

7.7.2 結構數組

7.7.3 聯合和運行時標記

7.7.4 指針和匿名值

7.8 控制流結構

7.8.1 條件執行

7.8.2 循環和迭代

7.8.3 case語句

7.9 過程調用

7.9.1 實參求值

7.9.2 保存和恢復寄存器

7.10 小結和展望

第8章 優化簡介

8.1 簡介

8.2 背景

8.2.1 例子

8.2.2 對優化的考慮

8.2.3 優化的時機

8.3 優化的范圍

8.4 局部優化

8.4.1 局部值編號

8.4.2 樹高平衡

8.5 區域優化

8.5.1 超局部值編號

8.5.2 循環展開

8.6 全局優化

8.6.1 利用活動信息查找未初始化變量

8.6.2 全局代碼置放

8.7 過程間優化

8.7.1 內聯替換

8.7.2 過程置放

8.7.3 針對過程間優化的編譯器組織結構

8.8 小結和展望

第9章 數據流分析

9.1 簡介

9.2 迭代數據流分析

9.2.1 支配性

9.2.2 活動變量分析

9.2.3 數據流分析的局限性

9.2.4 其他數據流問題

9.3 靜態單賦值形式

9.3.1 構造靜態單賦值形式的簡單方法

9.3.2 支配邊界

9.3.3 放置 函數

9.3.4 重命名

9.3.5 從靜態單賦值形式到其他形式的轉換

9.3.6 使用靜態單賦值形式

9.4 過程間分析

9.4.1 構建調用圖

9.4.2 過程間常量傳播

9.5 高級主題

9.5.1 結構性數據流算法和可歸約性

9.5.2 加速計算支配性的迭代框架算法的執行

9.6 小結和展望

第10章 標量優化

10.1 簡介

10.2 消除無用和不可達代碼

10.2.1 消除無用代碼

10.2.2 消除無用控制流

10.2.3 消除不可達代碼

10.3 代碼移動

10.3.1 緩式代碼移動

10.3.2 代碼提升

10.4 特化

10.4.1 尾調用優化

10.4.2 葉調用優化

10.4.3 參數提升

10.5 冗余消除

10.5.1 值相同與名字相同

10.5.2 基于支配者的值編號算法

10.6 為其他變換制造時機

10.6.1 超級塊復制

10.6.2 過程復制

10.6.3 循環外提

10.6.4 重命名

10.7 高級主題

10.7.1 合并優化

10.7.2 強度削減

10.7.3 選擇一種優化序列

10.8 小結和展望

第11章 指令選擇

11.1 簡介

11.2 代碼生成

11.3 擴展簡單的樹遍歷方案

11.4 通過樹模式匹配進行指令選擇

11.4.1 重寫規則

11.4.2 找到平鋪方案

11.4.3 工具

11.5 通過窺孔優化進行指令選擇

11.5.1 窺孔優化

11.5.2 窺孔變換程序

11.6 高級主題

11.6.1 學習窺孔模式

11.6.2 生成指令序列

11.7 小結和展望

第12章 指令調度

12.1 簡介

12.2 指令調度問題

12.2.1 度量調度質量的其他方式

12.2.2 是什么使調度這樣難

12.3 局部表調度

12.3.1 算法

12.3.2 調度具有可變延遲的操作

12.3.3 擴展算法

12.3.4 在表調度算法中打破平局

12.3.5 前向表調度與后向表調度

12.3.6 提高表調度的效率

12.4 區域性調度

12.4.1 調度擴展基本程序塊

12.4.2 跟蹤調度

12.4.3 通過復制構建適當的上下文環境

12.5 高級主題

12.5.1 軟件流水線的策略

12.5.2 用于實現軟件流水線的算法

12.6 小結和展望

第13章 寄存器分配

13.1 簡介

13.2 背景問題

13.2.1 內存與寄存器

13.2.2 分配與指派

13.2.3 寄存器類別

13.3 局部寄存器分配和指派

13.3.1 自頂向下的局部寄存器分配

13.3.2 自底向上的局部寄存器分配

13.3.3 超越單個程序塊

13.4 全局寄存器分配和指派

13.4.1 找到全局活動范圍

13.4.2 估算全局逐出代價

13.4.3 沖突和沖突圖

13.4.4 自頂向下著色

13.4.5 自底向上著色

13.4.6 合并副本以減小度數

13.4.7 比較自頂向下和自底向上全局分配器

13.4.8 將機器的約束條件編碼到沖突圖中

13.5 高級主題

13.5.1 圖著色寄存器分配方法的變體

13.5.2 靜態單賦值形式上的全局寄存器分配

13.6 小結和展望

附錄A ILOC

附錄B 數據結構

參考文獻

索引

媒體評論

"編譯器是一個內容豐富的研究領域,將整個計算機科學融匯在一個優雅的構造中。Cooper和Torczon的這本書很受歡迎,可以指導讀者輕松學習編譯器這種軟件系統,新版增加了兩位作者的一些設計經驗,并明確指出了許多必須注意的細節,同時又不忘強調設計的大局觀。對任何不熟悉編譯器的人來說,本書都是不可多得的參考手冊。"

——Michael D. Smith,哈佛大學文理學院院長,工程與應用科學John H. Finley Jr.講席教授

"本書是構建現代優化編譯器的指南。作者汲取了編譯器構建領域大量的經驗,以幫助學生掌握整體設計思路,同時引導學生了解構建有效的優化編譯器所必需的許多重要而微妙的細節。尤其值得一提的是,在我讀過的書中,本書對靜態單賦值形式的闡述最為清晰。"

——Jeffery von Ronne,得克薩斯大學圣安東尼奧分校計算機科學系助理教授

"本書采用了更常規且一致的結構,還包含大量輔助教學的內容,如復習題、附加示例、術語解釋和文本框說明等,這提升了它作為教科書的價值。本書還包括大量技術上的更新,包括非傳統語言、實際編譯器和編譯器技術非傳統用途方面的更多內容。優化方面的內容是第1版的特色,這一版中變得更為清晰易讀。"

——Michael L. Sccot,羅徹斯特大學計算機科學系教授,Programming Language Pragmatics的作者

"Keith Cooper和Linda Torczon不僅很好地講述了編譯器的歷史,也從實踐者的角度闡述了如何開發編譯器。書中包括了大量頗具實用價值的討論和說明,既涉及理論,也涉及眾多現存編譯器的實例(如Lisp、FORTRAN等)。對入門和高級"分配"與"優化"概念的討論,實際上涵蓋了編譯器設計的整個生命周期。對于計算機科學專業的學生以及編譯器設計和開發人員來說,本書都是必備參考書。"

——David Orleans,諾瓦東南大學

"這本書寫得實在是棒極了,內容翔實,輔以大量圖表和示例說明,作為大學編譯器課程的教科書和從業人員的參考書再合適不過了。代碼優化是其重點。"

——Reviews網站

網友評論(不代表本站觀點)

免責聲明

更多出版社