出版時間:2003-9 出版社:人民郵電 作者:格倫 頁數(shù):548 譯者:馮博琴
Tag標簽:無
內(nèi)容概要
《現(xiàn)代編譯程序設(shè)計》全面地介紹了現(xiàn)代編譯技術(shù),結(jié)構(gòu)上分為通用編譯技術(shù)和高級編譯技術(shù)兩大部分。第一部分介紹通用的編譯程序?qū)崿F(xiàn)技術(shù),包括詞法和語法分析、上下文處理、代碼生成以及存儲器管理的一般方法。第二部分介紹特定范型語言的高級編譯技術(shù),包括命令式語言、面向?qū)ο笳Z言、邏輯式語言、函數(shù)式語言及并行 / 分布式語言的上下文處理和代碼生成等內(nèi)容?!冬F(xiàn)代編譯程序設(shè)計》注重編譯程序的具體實現(xiàn)和優(yōu)化技術(shù),實例豐富,具有很強的可讀性和實用性。 《現(xiàn)代編譯程序設(shè)計》可作為高校計算機專業(yè)本科和研究生編譯程序設(shè)計課程的教科書,也可供從事計算機軟件開發(fā)的人員參考。
書籍目錄
第1章 導論 11.1 為什么學習編譯程序構(gòu)造 41.1.1 編譯程序構(gòu)造是非常成功的 41.1.2 編譯程序構(gòu)造的廣泛應(yīng)用 61.1.3 編譯程序包含普遍適用的算法 61.2 一個簡單的傳統(tǒng)的模塊化編譯程序/解釋程序 61.2.1 抽象語法樹 71.2.2 范例編譯程序的結(jié)構(gòu) 81.2.3 范例編譯程序的語言 91.2.4 范例編譯程序的詞法分析 101.2.5 范例編譯程序的語法分析 111.2.6 范例編譯程序的上下文處理 141.2.7 范例編譯程序的代碼生成 141.2.8 范例編譯程序的解釋程序 151.3 一個更接近于實際的編譯程序的結(jié)構(gòu) 161.3.1 結(jié)構(gòu) 171.3.2 運行時系統(tǒng) 181.3.3 捷徑 181.4 編譯程序體系結(jié)構(gòu) 181.4.1 編譯程序的寬度 191.4.2 誰主控 201.5 一個優(yōu)秀編譯程序的特性 221.6 可移植性和可重定目標性 231.7 優(yōu)化的位置和效用 231.8 編譯程序構(gòu)造簡史 241.8.1 1945~1960年:代碼生成 241.8.2 1960~1975年:分析 241.8.3 1975年至今:代碼生成和代碼優(yōu)化;范型 241.9 文法 251.9.1 文法形式 251.9.2 產(chǎn)生式過程 251.9.3 文法的擴展形式 271.9.4 文法特性 271.9.5 文法形式化方法 281.10 閉包算法 291.10.1 閉包算法的迭代實現(xiàn) 311.11 本書使用的概要代碼 331.12 小結(jié) 33第2章 從程序文本到抽象語法樹 382.1 從程序文本到記號——詞法結(jié)構(gòu) 412.1.1 讀程序文本 412.1.2 詞法分析與語法分析 422.1.3 正則表達式和正則描述 432.1.4 詞法分析 442.1.5 手動產(chǎn)生詞法分析程序 452.1.6 自動產(chǎn)生詞法分析程序 502.1.7 轉(zhuǎn)換表壓縮 632.1.8 詞法分析程序的錯誤處理 682.1.9 一個傳統(tǒng)的詞法分析程序產(chǎn)生器——lex 692.1.10 記號的詞法識別 702.1.11 符號表 722.1.12 宏處理和文件包含 762.1.13 小結(jié) 802.2 從記號到語法樹——語法分析 812.2.1 語法分析的兩種方法 822.2.2 錯誤檢測和錯誤恢復 842.2.3 手工生成一個自頂向下的語法分析程序 862.2.4 自動生成一個自頂向下的語法分析程序 882.2.5 自動創(chuàng)建一個自底向上的語法分析程序 1112.3 小結(jié) 132第3章 注釋抽象語法樹——上下文 1423.1 屬性文法 1433.1.1 依賴圖 1463.1.2 屬性計算 1473.1.3 循環(huán)處理 1533.1.4 屬性分配 1583.1.5 多次訪問屬性文法 1583.1.6 屬性文法類型的總結(jié) 1673.1.7 L-屬性文法 1673.1.8 S-屬性文法 1703.1.9 L-屬性文法與S-屬性文法的等價性 1713.1.10 擴展的文法符號和屬性文法 1723.1.11 小結(jié) 1733.2 手工方法 1733.2.1 線性化AST 1743.2.2 符號解釋 1783.2.3 數(shù)據(jù)流方程 1843.2.4 過程間的數(shù)據(jù)流分析 1883.2.5 上傳信息流——活躍分析 1893.2.6 符號解釋和數(shù)據(jù)流方程的比較 1943.3 小結(jié) 194第4章 處理中間代碼 2024.1 解釋 2034.1.1 遞歸解釋 2034.1.2 迭代解釋 2074.2 代碼生成 2104.2.1 避免完全的代碼生成 2134.2.2 開始點 2144.2.3 直接代碼生成 2144.2.4 簡單代碼生成 2184.2.5 基本塊的代碼生成 2304.2.6 BURS代碼生成和動態(tài)程序設(shè)計 2414.2.7 通過圖著色的寄存器分配 2554.2.8 超級編譯 2594.2.9 代碼生成技術(shù)的評價 2614.2.10 代碼優(yōu)化器的調(diào)試 2614.2.11 預(yù)處理中間代碼 2624.2.12 后處理目標代碼 2654.2.13 機器代碼生成 2674.3 匯編程序、連接程序和裝入程序 2684.3.1 匯編程序設(shè)計問題 2704.3.2 連接程序設(shè)計問題 2724.4 小結(jié) 273第5章 存儲管理 2835.1 顯式回收的數(shù)據(jù)空間分配 2845.1.1 基本存儲空間分配 2855.1.2 鏈表 2885.1.3 可擴展數(shù)組 2905.2 隱式回收的數(shù)據(jù)空間分配 2915.2.1 基本垃圾收集算法 2915.2.2 背景預(yù)備 2925.2.3 引用計數(shù) 2975.2.4 標記和掃描 3005.2.5 兩空間復制 3035.2.6 緊縮 3065.2.7 世代垃圾收集 3075.3 小結(jié) 307第6章 命令式和面向?qū)ο蟪绦?3136.1 上下文處理 3146.1.1 識別 3156.1.2 類型檢查 3216.1.3 小結(jié) 3286.2 源語言數(shù)據(jù)表示和處理 3286.2.1 基本類型 3296.2.2 枚舉類型 3296.2.3 指針類型 3296.2.4 記錄類型 3326.2.5 共用體類型 3336.2.6 數(shù)組類型 3346.2.7 集合類型 3366.2.8 例程類型 3366.2.9 對象類型 3376.2.10 接口類型 3446.3 例程及其活動 3456.3.1 活動記錄 3456.3.2 例程 3476.3.3 例程上的操作 3486.3.4 非嵌套例程 3506.3.5 嵌套例程 3526.3.6 Lambda提升 3576.3.7 迭代器和協(xié)作例程 3586.4 控制流語句的代碼生成 3596.4.1 局部控制流 3596.4.2 例程調(diào)用 3666.4.3 運行時錯誤處理 3726.5 模塊的代碼生成 3746.5.1 名字生成 3756.5.2 模塊初始化 3756.5.3 泛型的代碼生成 3766.6 小結(jié) 377第7章 函數(shù)式程序 3867.1 Haskell簡介 3877.1.1 越位規(guī)則 3877.1.2 列表 3887.1.3 列表內(nèi)涵 3887.1.4 模式匹配 3897.1.5 多態(tài)類型 3907.1.6 引用透明性 3917.1.7 高階函數(shù) 3917.1.8 惰性計算 3927.2 編譯函數(shù)式語言 3937.2.1 函數(shù)核 3947.3 多態(tài)類型檢查 3957.3.1 多態(tài)函數(shù)應(yīng)用 3967.4 脫糖 3977.4.1 列表的翻譯 3977.4.2 模式匹配的翻譯 3977.4.3 列表內(nèi)涵的翻譯 3997.4.4 嵌套函數(shù)的翻譯 4017.5 圖歸約 4027.5.1 歸約順序 4057.5.2 歸約引擎 4067.6 函數(shù)核程序的代碼生成 4097.6.1 避免一些應(yīng)用框架的構(gòu)造 4117.7 優(yōu)化函數(shù)核 4127.7.1 嚴格性分析 4137.7.2 裝箱分析 4177.7.3 尾部調(diào)用 4177.7.4 累加器轉(zhuǎn)換 4197.7.5 局限性 4207.8 高級圖處理 4217.8.1 可變長度結(jié)點 4217.8.2 指針標記 4217.8.3 聚集結(jié)點分配 4217.8.4 向量應(yīng)用結(jié)點 4227.9 小結(jié) 422第8章 邏輯式程序 4278.1 邏輯式程序設(shè)計模型 4288.1.1 構(gòu)建模塊 4288.1.2 推理機制 4308.2 解釋的通用實現(xiàn)模型 4318.2.1 解釋程序指令 4328.2.2 避免冗余目標列表 4348.2.3 避免復制目標列表尾部 4348.3 合一 4358.3.1 結(jié)構(gòu)、列表和集合的合一 4358.3.2 合一的實現(xiàn) 4378.3.3 兩個自由變量的合一 4408.3.4 小結(jié) 4418.4 編譯的通用實現(xiàn)模型 4418.4.1 列表程序 4428.4.2 編譯子句的搜索和合一 4448.4.3 WAM中的優(yōu)化子句選擇 4488.4.4 應(yīng)用“cut”機制 4508.4.5 謂詞assert和retract的實現(xiàn) 4528.5 合一的編譯代碼 4558.5.1 WAM中的合一指令 4568.5.2 通過手工局部計算得到合一指令 4578.5.3 WAM中的結(jié)構(gòu)合一 4628.5.4 一種優(yōu)化:讀/寫模式 4648.5.5 WAM中合一結(jié)構(gòu)的進一步優(yōu)化 4668.5.6 小結(jié) 467第9章 并行和分布式程序 4729.1 并行程序設(shè)計模型 4749.1.1 共享變量和管程 4749.1.2 消息傳遞模型 4769.1.3 面向?qū)ο笳Z言 4779.1.4 Linda元組空間 4779.1.5 數(shù)據(jù)并行語言 4789.2 進程和線程 4799.3 共享變量 4819.3.1 鎖 4819.3.2 管程 4819.4 消息傳遞 4829.4.1 接收方定位 4839.4.2 編組 4839.4.3 消息的類型檢查 4849.4.4 消息選擇 4849.5 并行的面向?qū)ο笳Z言 4859.5.1 對象定位 4859.5.2 對象遷移 4869.5.3 對象復制 4879.6 元組空間 4889.6.1 避免關(guān)聯(lián)尋址的開銷 4889.6.2 元組空間的分布實現(xiàn) 4909.7 自動并行 4929.7.1 自動地使用并行性 4929.7.2 數(shù)據(jù)依賴 4949.7.3 循環(huán)轉(zhuǎn)換 4959.7.4 分布式存儲器的自動并行 4969.8 小結(jié) 498附錄A 一個簡單的面向?qū)ο缶幾g程序/解釋程序 502附錄B 練習答案 509附錄C 參考文獻 519附錄D 術(shù)語表 527
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
現(xiàn)代編譯程序設(shè)計ModernCompilerDesign中文版 PDF格式下載