A Retargetable C Compiler: Design and Implementation (Hardcover)
David R. Hanson, Christopher W. Fraser
- 出版商: Benjamin Cummins
- 出版日期: 1995-01-31
- 售價: $2,440
- 貴賓價: 9.5 折 $2,318
- 語言: 英文
- 頁數: 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,800$1,710 -
$1,840$1,748 -
$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