Compilers
Principles, Techniques, and Tools
Inbunden, Engelska, 2006
3 359 kr
Compilers: Principles, Techniques and Tools, known to professors, students, and developers worldwide as the "Dragon Book," is available in a new edition. Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published. The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development.
Produktinformation
- Utgivningsdatum2006-10-27
- Mått165 x 242 x 44 mm
- Vikt1 490 g
- FormatInbunden
- SpråkEngelska
- Antal sidor1 040
- Upplaga2
- FörlagPearson Education
- ISBN9780321486813
Tillhör följande kategorier
Alfred V. Aho is Lawrence Gussman Professor of Computer Science at Columbia University. Professor Aho has won several awards including the Great Teacher Award for 2003 from the Society of Columbia Graduates and the IEEE John von Neumann Medal. He is a member of the National Academy of Engineering and a fellow of the ACM and IEEE.Monica S. Lam is a Professor of Computer Science at Stanford University, was the Chief Scientist at Tensilica and the founding CEO of moka5. She led the SUIF project which produced one of the most popular research compilers, and pioneered numerous compiler techniques used in industry.Ravi Sethi launched the research organization in Avaya and is president of Avaya Labs. Previously, he was a senior vice president at Bell Labs in Murray Hill and chief technical officer for communications software at Lucent Technologies. He has held teaching positions at the Pennsylvania State University and the University of Arizona, and has taught at Princeton University and Rutgers. He is a fellow of the ACM.Jeffrey Ullman is CEO of Gradiance and a Stanford W. Ascherman Professor of Computer Science at Stanford University. His research interests include database theory, database integration, data mining, and education using the information infrastructure. He is a member of the National Academy of Engineering, a fellow of the ACM, and winner of the Karlstrom Award and Knuth Prize.
- 1. Introduction 1.1 Language Processors1.2 The Structure of a Compiler1.3 The Evolution of Programming Languages1.4 The Science of Building a Compiler1.6 Programming Language Basics1.7 Summary of Chapter 11.8 References for Chapter 12. A Simple Syntax-Directed Translator 2.1 Introduction2.2 Syntax Definition2.3 Syntax-Directed Translation2.4 Parsing2.5 A Translator for Simple Expressions2.6 Lexical Analysis2.7 Symbol Tables2.8 Intermediate Code Generation2.9 Summary of Chapter 23. Lexical Analysis 3.1 The Role of the Lexical Analyzer3.2 Input Buffering3.3 Specification of Tokens3.4 Recognition of Tokens3.5 The Lexical-Analyzer Generator Lex3.6 Finite Automata3.7 From Regular Expressions to Automata3.8 Design of a Lexical-Analyzer Generator3.9 Optimization of DFA-Based Pattern Matchers3.10 Summary of Chapter 33.11 References for Chapter 34. Syntax Analysis 4.1 Introduction4.2 Context-Free Grammars4.3 Writing a Grammar4.4 Top-Down Parsing4.5 Bottom-Up Parsing4.6 Introduction to LR Parsing: Simple LR4.7 More Powerful LR Parsers4.8 Using Ambiguous Grammars4.9 Parser Generators4.10 Summary of Chapter 44.11 References for Chapter 45. Syntax-Directed Translation 5.1 Syntax-Directed Definitions5.2 Evaluation Orders for SDD's5.3 Applications of Syntax-Directed Translation5.4 Syntax-Directed Translation Schemes5.5 Implementing L-Attributed SDD's5.6 Summary of Chapter 55.7 References for Chapter 56. Intermediate-Code Generation 6.1 Variants of Syntax Trees6.2 Three-Address Code6.3 Types and Declarations6.4 Translation of Expressions6.5 Type Checking6.6 Control Flow6.7 Backpatching6.8 Switch-Statements6.9 Intermediate Code for Procedures6.10 Summary of Chapter 66.11 References for Chapter 67. Run-Time Environments 7.1 Storage Organization7.2 Stack Allocation of Space7.3 Access to Nonlocal Data on the Stack7.4 Heap Management7.5 Introduction to Garbage Collection7.6 Introduction to Trace-Based Collection7.7 Short-Pause Garbage Collection7.8 Advanced Topics in Garbage Collection7.9 Summary of Chapter 77.10 References for Chapter 78. Code Generation 8.1 Issues in the Design of a Code Generator8.2 The Target Language8.3 Addresses in the Target Code8.4 Basic Blocks and Flow Graphs8.5 Optimization of Basic Blocks8.6 A Simple Code Generator8.7 Peephole Optimization8.8 Register Allocation and Assignment8.9 Instruction Selection by Tree Rewriting8.10 Optimal Code Generation for Expressions8.11 Dynamic Programming Code-Generation8.12 Summary of Chapter 88.13 References for Chapter 89. Machine-Independent Optimizations 9.1 The Principal Sources of Optimization9.2 Introduction to Data-Flow Analysis9.3 Foundations of Data-Flow Analysis9.4 Constant Propagation9.5 Partial-Redundancy Elimination9.6 Loops in Flow Graphs9.7 Region-Based Analysis9.8 Symbolic Analysis9.9 Summary of Chapter 99.10 References for Chapter 910. Instruction-Level Parallelism 10.1 Processor Architectures10.2 Code-Scheduling Constraints10.3 Basic-Block Scheduling10.4 Global Code Scheduling10.5 Software Pipelining10.6 Summary of Chapter 1010.7 References for Chapter 1011. Optimizing for Parallelism and Locality 11.1 Basic Concepts11.2 Matrix Multiply: An In-Depth Example11.3 Iteration Spaces11.4 Affine Array Indexes11.5 Data Reuse11.6 Array Data-Dependence Analysis11.7 Finding Synchronization-Free Parallelism11.8 Synchronization Between Parallel Loops11.9 Pipelining11.10 Locality Optimizations11.11 Other Uses of Affine Transforms11.12 Summary of Chapter 1111.13 References for Chapter 1112. Interprocedural Analysis 12.1 Basic Concepts12.2 Why Interprocedural Analysis?12.3 A Logical Representation of Data Flow12.4 A Simple Pointer-Analysis Algorithm12.5 Context-Insensitive Interprocedural Analysis12.6 Context-Sensitive Pointer Analysis12.7 Datalog Implementation by BDD's12.8 Summary of Chapter 1212.9 References for Chapter 12A. A Complete Front End A.1 The Source LanguageA.2 MainA.3 Lexical AnalyzerA.4 Symbol Tables and TypesA.5 Intermediate Code for ExpressionsA.6 Jumping Code for Boolean ExpressionsA.7 Intermediate Code for StatementsA.8 ParserA.9 Creating the Front EndB. Finding Linearly Independent Solutions Index