A Retargetable C Compiler: Design and Implementation (Hardcover)
暫譯: 可重定向的 C 編譯器:設計與實現 (精裝版)
David R. Hanson, Christopher W. Fraser
- 出版商: Benjamin Cummins
- 出版日期: 1995-01-31
- 售價: $2,710
- 貴賓價: 9.5 折 $2,575
- 語言: 英文
- 頁數: 584
- 裝訂: Paperback
- ISBN: 0805316701
- ISBN-13: 9780805316704
-
相關分類:
C 程式語言、Compiler
-
相關翻譯:
可變目標C編譯器:設計與實現 (簡中版)
海外代購書籍(需單獨結帳)
買這商品的人也買了...
-
$580$458 -
$680$537 -
$980$774 -
$920$727 -
$720$569 -
$450$360 -
$450$351 -
$1,890$1,796 -
$1,920$1,824 -
$690$587 -
$620$527 -
$780$741 -
$750$638 -
$760$600 -
$580$458 -
$590$466 -
$680$537 -
$690$538 -
$720$569 -
$750$638 -
$560$476 -
$480$379 -
$750$593 -
$780$616 -
$680$537
相關主題
商品描述
Description
Designed as a self-study guide, the book describes the real-world tradeoffs encountered in building a production-quality, platform-retargetable compiler. The authors examine the implementation of lcc, a production-quality, research-oriented retargetable compiler, designed at AT&T Bell Laboratories for the ANSI C programming language. The authors' innovative approach-a "literate program" that intermingles the text with the source code-uses a line-by-line explanation of the code to demonstrate how lcc is built.
Table Of Contents
Preface.
1. Introduction.
How to Read This Book.
Overview.
Design.
Common Declarations.
Syntax Specifications.
Errors.
2. Storage Management.
Arena Representation.
Allocating Space.
Deallocating Space.
Strings.
3. Types.
Representing Symbol Tables.
Changing Scope.
Finding and Installing Identifiers.
Labels.
Constants.
Generated Variables.
4. Code Generation Interface.
Type Management.
Type Predicates.
Type Constructors.
Function Types.
Structure and Enumeration Types.
Type-Checking Functions.
Type Mapping.
5. Lexical Analysis.
Interface Records.
Symbols.
Types.
Dag Operators.
Interface Flags.
Initialization.
Definitions.
Constants.
Functions.
Interface Binding.
Upcalls.
6. Parsing.
Recognizing Tokens.
Recognizing Keywords.
Recognizing Identifiers.
Recognizing Numbers.
Recognizing Character Constants and Strings.
7. Expressions.
Ambiguity and Parse Trees.
Top-Down Parsing.
FIRST and FOLLOW Sets.
Writing Parsing Functions.
Handling Syntax Errors.
8. Expression Semantics.
Parsing Expressions.
Parsing C Expressions.
Assignment Expressions.
Conditional Expressions.
Binary Expressions.
Unary and Postfix Expressions.
Primary Expressions.
9. Expression Semantics.
Unary and Postfix Operators.
Function Calls.
Binary Operators.
Assignments.
Conditionals.
Constant Folding.
10. Statements.
Execution Points.
Recognizing Statements.
If Statements.
Labels and Gotos.
Loops.
Switch Statements.
Return Statements.
Managing Labels and Jumps.
11. Declarations.
Declarations.
Declarators.
Function Declarators.
Structure Specifiers.
Function Definitions.
Compound Statements.
Finalization.
The Main Program.
12. Generating Immediate Code.
Building Nodes.
Flow of Control.
Assignments.
Function Calls.
Enforcing Evaluation Order.
Driving Code Generation.
Eliminating Multiply Referenced Nodes.
13. Structuring the Code Generator.
Interface Extensions.
Upcalls.
Node Extensions.
Symbol Extensions.
Frame Layout.
Generating Code to Copy Blocks.
Initialization.
14. Selecting and Emitting instructions.
Labelling the Tree.
Reducing the Tree.
Cost Functions.
Debugging.
The Emitter.
Register Targeting.
Coordinating Instruction Selection.
Shared Rules.
15. Register Allocation.
Tracking the Register State.
Allocating Registers.
Spilling.
16. Generating MIPS R3000 Code.
Selecting Instructions.
Implementing Functions.
Defining Data.
Segments.
Copying Blocks.
17. Generating SPARC Code.
Selecting Instructions.
Implementing Functions.
Defining Data.
Copying Blocks.
18. Generating X86 Code.
Selecting Instructions.
Implementing Functions.
Defining Data.
19. Retrospective.
Interface.
Syntactic and Semantic Analyses.
Code Generation and Optimization.
Testing and Validation.
Bibliography.
Index.
How to Obtain ICC. 0805316701T04062001
商品描述(中文翻譯)
描述
本書設計為自學指南,描述在構建生產級、可重定向平台的編譯器時所遇到的現實世界權衡。作者檢視了 lcc 的實現,這是一個生產級、以研究為導向的可重定向編譯器,專為 ANSI C 程式語言在 AT&T Bell 實驗室設計。作者的創新方法是一種「文學程式」,將文本與源代碼交織在一起,通過逐行解釋代碼來展示 lcc 的構建過程。
目錄
前言。
1. 介紹。
文學程式。
如何閱讀本書。
概述。
設計。
常見聲明。
語法規範。
錯誤。
2. 儲存管理。
記憶體管理介面。
區域表示。
分配空間。
釋放空間。
字串。
3. 類型。
表示符號。
表示符號表。
改變範圍。
查找和安裝標識符。
標籤。
常數。
生成變數。
4. 代碼生成介面。
表示類型。
類型管理。
類型謂詞。
類型構造函數。
函數類型。
結構和列舉類型。
類型檢查函數。
類型映射。
5. 詞法分析。
類型度量。
介面記錄。
符號。
類型。
有向無環圖運算符。
介面標誌。
初始化。
定義。
常數。
函數。
介面綁定。
上調用。
6. 解析。
輸入。
識別標記。
識別關鍵字。
識別標識符。
識別數字。
識別字符常數和字串。
7. 表達式。
語言和文法。
歧義和解析樹。
自上而下解析。
FIRST 和 FOLLOW 集。
編寫解析函數。
處理語法錯誤。
8. 表達式語義。
表示表達式。
解析表達式。
解析 C 表達式。
賦值表達式。
條件表達式。
二元表達式。
一元和後綴表達式。
主要表達式。
9. 表達式語義。
轉換。
一元和後綴運算符。
函數調用。
二元運算符。
賦值。
條件。
常數折疊。
10. 語句。
表示代碼。
執行點。
識別語句。
如果語句。
標籤和跳轉。
循環。
切換語句。
返回語句。
管理標籤和跳轉。
11. 聲明。
翻譯單元。
聲明。
聲明符。
函數聲明符。
結構規範。
函數定義。
複合語句。
最終化。
主程序。
12. 生成即時代碼。
消除公共子表達式。
構建節點。
控制流。
賦值。
函數調用。
強制評估順序。
驅動代碼生成。
消除多重引用的節點。
13. 結構化代碼生成器。
代碼生成器的組織。
介面擴展。
上調用。
節點擴展。
符號擴展。
框架佈局。
生成複製區塊的代碼。
初始化。
14. 選擇和發出指令。
規範。
標記樹。
簡化樹。
成本函數。
調試。
發射器。
寄存器目標。
協調指令選擇。
共享規則。
15. 寄存器分配。
組織。
跟踪寄存器狀態。
分配寄存器。
溢出。
16. 生成 MIPS R3000 代碼。
寄存器。
選擇指令。
實現函數。
定義數據。
段。
複製區塊。
17. 生成 SPARC 代碼。
寄存器。
選擇指令。
實現函數。
定義數據。
複製區塊。
18. 生成 X86 代碼。
寄存器。
選擇指令。
實現函數。
定義數據。
19. 回顧。
數據結構。
介面。
語法和語義分析。
代碼生成和優化。
測試和驗證。
參考文獻。
索引。
如何獲取 ICC。0805316701T04062001