- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
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.
Andere Kunden interessierten sich auch für
- Alfred V. AhoCompilers78,99 €
- Bill HamiltonNUnit Pocket Reference10,99 €
- Axel SimonValue-Range Analysis of C Programs191,99 €
- Brian W. KernighanThe C Programming Language44,99 €
- Al KelleyA Book on C88,99 €
- Ahmad Talha SiddiquiData Structure Using C158,99 €
- Stephen PrataC Primer Plus77,99 €
-
-
-
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.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- Verlag: Pearson Education
- Seitenzahl: 584
- Erscheinungstermin: 31. Januar 1995
- Englisch
- Abmessung: 237mm x 185mm x 32mm
- Gewicht: 955g
- ISBN-13: 9780805316704
- ISBN-10: 0805316701
- Artikelnr.: 22308291
- Herstellerkennzeichnung
- Libri GmbH
- Europaallee 1
- 36244 Bad Hersfeld
- 06621 890
- Verlag: Pearson Education
- Seitenzahl: 584
- Erscheinungstermin: 31. Januar 1995
- Englisch
- Abmessung: 237mm x 185mm x 32mm
- Gewicht: 955g
- ISBN-13: 9780805316704
- ISBN-10: 0805316701
- Artikelnr.: 22308291
- Herstellerkennzeichnung
- Libri GmbH
- Europaallee 1
- 36244 Bad Hersfeld
- 06621 890
Since 1975, Christopher W. Fraser has researched compiling, particularly producing code generators automatically from compact specs, and has published many technical articles in this area. He originated retargetable peephole optimization, which GCC, a popular C compiler, uses to help select instructions. From 1977 until 1986, Fraser taught computer science, including compiling, at the University of Arizona. Since 1986, Fraser has conducted computing research at AT&T Bell Laboratories in Murray Hill, New Jersey. David R. Hanson is a Professor of Computer Science at Princeton University with more than 20 years of research experience in programming languages. He has conducted research in conjunction with Bell Laboratories and is the co-author of lcc, a production quality, research compiler for the C language that is popular with the Unix community. lcc is presented and analyzed in the book A Retargetable C Compiler: Design and Implementation, by Christopher Fraser and David Hanson (c) 1995, Addison-Wesley. 0805316701AB04062001
Preface.
1. Introduction.
Literate Programs.
How to Read This Book.
Overview.
Design.
Common Declarations.
Syntax Specifications.
Errors.
2. Storage Management.
Memory Management Interface.
Arena Representation.
Allocating Space.
Deallocating Space.
Strings.
3. Types.
Representing Symbols.
Representing Symbol Tables.
Changing Scope.
Finding and Installing Identifiers.
Labels.
Constants.
Generated Variables.
4. Code Generation Interface.
Representing Types.
Type Management.
Type Predicates.
Type Constructors.
Function Types.
Structure and Enumeration Types.
Type-Checking Functions.
Type Mapping.
5. Lexical Analysis.
Type Metrics.
Interface Records.
Symbols.
Types.
Dag Operators.
Interface Flags.
Initialization.
Definitions.
Constants.
Functions.
Interface Binding.
Upcalls.
6. Parsing.
Input.
Recognizing Tokens.
Recognizing Keywords.
Recognizing Identifiers.
Recognizing Numbers.
Recognizing Character Constants and Strings.
7. Expressions.
Languages and Grammars.
Ambiguity and Parse Trees.
Top-Down Parsing.
FIRST and FOLLOW Sets.
Writing Parsing Functions.
Handling Syntax Errors.
8. Expression Semantics.
Representing Expressions.
Parsing Expressions.
Parsing C Expressions.
Assignment Expressions.
Conditional Expressions.
Binary Expressions.
Unary and Postfix Expressions.
Primary Expressions.
9. Expression Semantics.
Conversions.
Unary and Postfix Operators.
Function Calls.
Binary Operators.
Assignments.
Conditionals.
Constant Folding.
10. Statements.
Representing Code.
Execution Points.
Recognizing Statements.
If Statements.
Labels and Gotos.
Loops.
Switch Statements.
Return Statements.
Managing Labels and Jumps.
11. Declarations.
Translation Units.
Declarations.
Declarators.
Function Declarators.
Structure Specifiers.
Function Definitions.
Compound Statements.
Finalization.
The Main Program.
12. Generating Immediate Code.
Eliminating Common Subexpressions.
Building Nodes.
Flow of Control.
Assignments.
Function Calls.
Enforcing Evaluation Order.
Driving Code Generation.
Eliminating Multiply Referenced Nodes.
13. Structuring the Code Generator.
Organization of the Code Generator.
Interface Extensions.
Upcalls.
Node Extensions.
Symbol Extensions.
Frame Layout.
Generating Code to Copy Blocks.
Initialization.
14. Selecting and Emitting instructions.
Specifications.
Labelling the Tree.
Reducing the Tree.
Cost Functions.
Debugging.
The Emitter.
Register Targeting.
Coordinating Instruction Selection.
Shared Rules.
15. Register Allocation.
Organization.
Tracking the Register State.
Allocating Registers.
Spilling.
16. Generating MIPS R3000 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Segments.
Copying Blocks.
17. Generating SPARC Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Copying Blocks.
18. Generating X86 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
19. Retrospective.
Data Structures.
Interface.
Syntactic and Semantic Analyses.
Code Generation and Optimization.
Testing and Validation.
Bibliography.
Index.
How to Obtain ICC. 0805316701T04062001
1. Introduction.
Literate Programs.
How to Read This Book.
Overview.
Design.
Common Declarations.
Syntax Specifications.
Errors.
2. Storage Management.
Memory Management Interface.
Arena Representation.
Allocating Space.
Deallocating Space.
Strings.
3. Types.
Representing Symbols.
Representing Symbol Tables.
Changing Scope.
Finding and Installing Identifiers.
Labels.
Constants.
Generated Variables.
4. Code Generation Interface.
Representing Types.
Type Management.
Type Predicates.
Type Constructors.
Function Types.
Structure and Enumeration Types.
Type-Checking Functions.
Type Mapping.
5. Lexical Analysis.
Type Metrics.
Interface Records.
Symbols.
Types.
Dag Operators.
Interface Flags.
Initialization.
Definitions.
Constants.
Functions.
Interface Binding.
Upcalls.
6. Parsing.
Input.
Recognizing Tokens.
Recognizing Keywords.
Recognizing Identifiers.
Recognizing Numbers.
Recognizing Character Constants and Strings.
7. Expressions.
Languages and Grammars.
Ambiguity and Parse Trees.
Top-Down Parsing.
FIRST and FOLLOW Sets.
Writing Parsing Functions.
Handling Syntax Errors.
8. Expression Semantics.
Representing Expressions.
Parsing Expressions.
Parsing C Expressions.
Assignment Expressions.
Conditional Expressions.
Binary Expressions.
Unary and Postfix Expressions.
Primary Expressions.
9. Expression Semantics.
Conversions.
Unary and Postfix Operators.
Function Calls.
Binary Operators.
Assignments.
Conditionals.
Constant Folding.
10. Statements.
Representing Code.
Execution Points.
Recognizing Statements.
If Statements.
Labels and Gotos.
Loops.
Switch Statements.
Return Statements.
Managing Labels and Jumps.
11. Declarations.
Translation Units.
Declarations.
Declarators.
Function Declarators.
Structure Specifiers.
Function Definitions.
Compound Statements.
Finalization.
The Main Program.
12. Generating Immediate Code.
Eliminating Common Subexpressions.
Building Nodes.
Flow of Control.
Assignments.
Function Calls.
Enforcing Evaluation Order.
Driving Code Generation.
Eliminating Multiply Referenced Nodes.
13. Structuring the Code Generator.
Organization of the Code Generator.
Interface Extensions.
Upcalls.
Node Extensions.
Symbol Extensions.
Frame Layout.
Generating Code to Copy Blocks.
Initialization.
14. Selecting and Emitting instructions.
Specifications.
Labelling the Tree.
Reducing the Tree.
Cost Functions.
Debugging.
The Emitter.
Register Targeting.
Coordinating Instruction Selection.
Shared Rules.
15. Register Allocation.
Organization.
Tracking the Register State.
Allocating Registers.
Spilling.
16. Generating MIPS R3000 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Segments.
Copying Blocks.
17. Generating SPARC Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Copying Blocks.
18. Generating X86 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
19. Retrospective.
Data Structures.
Interface.
Syntactic and Semantic Analyses.
Code Generation and Optimization.
Testing and Validation.
Bibliography.
Index.
How to Obtain ICC. 0805316701T04062001
Preface.
1. Introduction.
Literate Programs.
How to Read This Book.
Overview.
Design.
Common Declarations.
Syntax Specifications.
Errors.
2. Storage Management.
Memory Management Interface.
Arena Representation.
Allocating Space.
Deallocating Space.
Strings.
3. Types.
Representing Symbols.
Representing Symbol Tables.
Changing Scope.
Finding and Installing Identifiers.
Labels.
Constants.
Generated Variables.
4. Code Generation Interface.
Representing Types.
Type Management.
Type Predicates.
Type Constructors.
Function Types.
Structure and Enumeration Types.
Type-Checking Functions.
Type Mapping.
5. Lexical Analysis.
Type Metrics.
Interface Records.
Symbols.
Types.
Dag Operators.
Interface Flags.
Initialization.
Definitions.
Constants.
Functions.
Interface Binding.
Upcalls.
6. Parsing.
Input.
Recognizing Tokens.
Recognizing Keywords.
Recognizing Identifiers.
Recognizing Numbers.
Recognizing Character Constants and Strings.
7. Expressions.
Languages and Grammars.
Ambiguity and Parse Trees.
Top-Down Parsing.
FIRST and FOLLOW Sets.
Writing Parsing Functions.
Handling Syntax Errors.
8. Expression Semantics.
Representing Expressions.
Parsing Expressions.
Parsing C Expressions.
Assignment Expressions.
Conditional Expressions.
Binary Expressions.
Unary and Postfix Expressions.
Primary Expressions.
9. Expression Semantics.
Conversions.
Unary and Postfix Operators.
Function Calls.
Binary Operators.
Assignments.
Conditionals.
Constant Folding.
10. Statements.
Representing Code.
Execution Points.
Recognizing Statements.
If Statements.
Labels and Gotos.
Loops.
Switch Statements.
Return Statements.
Managing Labels and Jumps.
11. Declarations.
Translation Units.
Declarations.
Declarators.
Function Declarators.
Structure Specifiers.
Function Definitions.
Compound Statements.
Finalization.
The Main Program.
12. Generating Immediate Code.
Eliminating Common Subexpressions.
Building Nodes.
Flow of Control.
Assignments.
Function Calls.
Enforcing Evaluation Order.
Driving Code Generation.
Eliminating Multiply Referenced Nodes.
13. Structuring the Code Generator.
Organization of the Code Generator.
Interface Extensions.
Upcalls.
Node Extensions.
Symbol Extensions.
Frame Layout.
Generating Code to Copy Blocks.
Initialization.
14. Selecting and Emitting instructions.
Specifications.
Labelling the Tree.
Reducing the Tree.
Cost Functions.
Debugging.
The Emitter.
Register Targeting.
Coordinating Instruction Selection.
Shared Rules.
15. Register Allocation.
Organization.
Tracking the Register State.
Allocating Registers.
Spilling.
16. Generating MIPS R3000 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Segments.
Copying Blocks.
17. Generating SPARC Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Copying Blocks.
18. Generating X86 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
19. Retrospective.
Data Structures.
Interface.
Syntactic and Semantic Analyses.
Code Generation and Optimization.
Testing and Validation.
Bibliography.
Index.
How to Obtain ICC. 0805316701T04062001
1. Introduction.
Literate Programs.
How to Read This Book.
Overview.
Design.
Common Declarations.
Syntax Specifications.
Errors.
2. Storage Management.
Memory Management Interface.
Arena Representation.
Allocating Space.
Deallocating Space.
Strings.
3. Types.
Representing Symbols.
Representing Symbol Tables.
Changing Scope.
Finding and Installing Identifiers.
Labels.
Constants.
Generated Variables.
4. Code Generation Interface.
Representing Types.
Type Management.
Type Predicates.
Type Constructors.
Function Types.
Structure and Enumeration Types.
Type-Checking Functions.
Type Mapping.
5. Lexical Analysis.
Type Metrics.
Interface Records.
Symbols.
Types.
Dag Operators.
Interface Flags.
Initialization.
Definitions.
Constants.
Functions.
Interface Binding.
Upcalls.
6. Parsing.
Input.
Recognizing Tokens.
Recognizing Keywords.
Recognizing Identifiers.
Recognizing Numbers.
Recognizing Character Constants and Strings.
7. Expressions.
Languages and Grammars.
Ambiguity and Parse Trees.
Top-Down Parsing.
FIRST and FOLLOW Sets.
Writing Parsing Functions.
Handling Syntax Errors.
8. Expression Semantics.
Representing Expressions.
Parsing Expressions.
Parsing C Expressions.
Assignment Expressions.
Conditional Expressions.
Binary Expressions.
Unary and Postfix Expressions.
Primary Expressions.
9. Expression Semantics.
Conversions.
Unary and Postfix Operators.
Function Calls.
Binary Operators.
Assignments.
Conditionals.
Constant Folding.
10. Statements.
Representing Code.
Execution Points.
Recognizing Statements.
If Statements.
Labels and Gotos.
Loops.
Switch Statements.
Return Statements.
Managing Labels and Jumps.
11. Declarations.
Translation Units.
Declarations.
Declarators.
Function Declarators.
Structure Specifiers.
Function Definitions.
Compound Statements.
Finalization.
The Main Program.
12. Generating Immediate Code.
Eliminating Common Subexpressions.
Building Nodes.
Flow of Control.
Assignments.
Function Calls.
Enforcing Evaluation Order.
Driving Code Generation.
Eliminating Multiply Referenced Nodes.
13. Structuring the Code Generator.
Organization of the Code Generator.
Interface Extensions.
Upcalls.
Node Extensions.
Symbol Extensions.
Frame Layout.
Generating Code to Copy Blocks.
Initialization.
14. Selecting and Emitting instructions.
Specifications.
Labelling the Tree.
Reducing the Tree.
Cost Functions.
Debugging.
The Emitter.
Register Targeting.
Coordinating Instruction Selection.
Shared Rules.
15. Register Allocation.
Organization.
Tracking the Register State.
Allocating Registers.
Spilling.
16. Generating MIPS R3000 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Segments.
Copying Blocks.
17. Generating SPARC Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
Copying Blocks.
18. Generating X86 Code.
Registers.
Selecting Instructions.
Implementing Functions.
Defining Data.
19. Retrospective.
Data Structures.
Interface.
Syntactic and Semantic Analyses.
Code Generation and Optimization.
Testing and Validation.
Bibliography.
Index.
How to Obtain ICC. 0805316701T04062001