
Retargetable C Compiler, A Design and Implementation
by Hanson, David R.; Fraser, Christopher W.Rent Book
New Book
We're Sorry
Sold Out
Used Book
We're Sorry
Sold Out
eBook
We're Sorry
Not Available
How Marketplace Works:
- This item is offered by an independent seller and not shipped from our warehouse
- Item details like edition and cover design may differ from our description; see seller's comments before ordering.
- Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
- Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
- Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.
Summary
Author Biography
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
Table of Contents
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
Excerpts
An electronic version of this book is available through VitalSource.
This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.
By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.
Digital License
You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.
More details can be found here.
A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.
Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.
Please view the compatibility matrix prior to purchase.