Because Knetbooks knows college students. Our rental program is designed to save you time and money. Whether you need a textbook for a semester, quarter or even a summer session, we have an option for you. Simply select a rental period, enter your information and your book will be on its way!
| Preface | p. xiii |
| Acknowledgments | p. xix |
| Introduction | p. 1 |
| The Concept of a Trustworthy Compiler | p. 2 |
| Kinds of Compilers | p. 4 |
| Evolution of Java Compilers | p. 5 |
| Compilation for .NET | p. 6 |
| Phases of Compilation | p. 7 |
| Overview of Compiler Development Principles and Technologies | p. 8 |
| History of Compiler Development in... MORE | p. 13 |
| Exercises to Chapter 1 | p. 15 |
| Theoretical Foundations and Principles of Trustworthy Compilers | p. 16 |
| The Trustworthy Computing (TWC) Initiative | p. 16 |
| TWC and Trustworthy Compilers | p. 17 |
| Verified Compilers | p. 24 |
| Spec#: Microsoft's Approach to Verifying Compilers | p. 26 |
| Perspectives of Verified and Verifying Compilation | p. 28 |
| Exercises to Chapter 2 | p. 29 |
| Lexical Analysis and Its Trustworthiness Principles | p. 31 |
| Token Classes | p. 31 |
| The Output of the Lexical Analyzer | p. 33 |
| Processing White Spaces, Comments, and New Lines | p. 34 |
| Theoretical Models of Lexical Analysis | p. 35 |
| Lexical Errors, Error Diagnostics, and Recovery | p. 38 |
| Processing Identifiers and Keywords | p. 38 |
| The Architecture of a Lexical Analyzer and the Principles of Its Implementation | p. 42 |
| The Lexical Analyzer Generator Lex | p. 45 |
| Lexical Analyzer Generation in ANTLR | p. 48 |
| Exercises to Chapter 3 | p. 51 |
| Parsing and Trustworthy Methods of Syntax Error Recovery | p. 52 |
| Basic Concepts and Principles of Parsing | p. 53 |
| Recursive Descent and Simple Lookahead Mechanism | p. 55 |
| Overview of Error Recovery in Parsing: Error Recovery for Recursive Descent | p. 62 |
| LR(1) and LALR(1) Parsing | p. 67 |
| Error Recovery in LR Parsing | p. 81 |
| The Yacc Parser Generator | p. 82 |
| The Bison Parser Generator: Generalized LR Parsing | p. 87 |
| The Yacc++, JavaCC, SableCC, ANTLR, and CoCo/R Object-Oriented Parser Generators | p. 89 |
| Exercises to Chapter 4 | p. 95 |
| Semantic Analysis and Typing: Efficient and Trustworthy Techniques | p. 97 |
| Basic Concepts and Principles of Semantic Analysis | p. 97 |
| Formal Model of Semantic Analysis: Attributed Grammars | p. 99 |
| Definition Systems with Forward References and the Algorithm of Their One-Pass Analysis | p. 103 |
| Commonly Used Semantic Attributes for Program Constructs | p. 107 |
| Design Flaws of the Semantic Attribute Evaluation and Our Efficient Methods to Speed It Up | p. 111 |
| Lookup-Traditional and Novel Techniques | p. 114 |
| Typing and Type-Checking: Basic Concepts | p. 118 |
| Representing Types at Compile Time | p. 121 |
| Efficient Method and Algorithm to Represent and Handle Types with Structural Identity | p. 123 |
| Type Identity and Type Compatibility | p. 126 |
| Type-Checking, Typing Error Diagnostics, and Recovery | p. 128 |
| Code Trustworthiness Checks During Semantic Analysis | p. 131 |
| Checks for Context Restrictions in Semantic Analysis | p. 139 |
| Intermediate Code Generation-Principles and Architectural Models | p. 141 |
| Postfix (Reverse Polish) Notation | p. 142 |
| PCC Trees | p. 146 |
| Triples | p. 149 |
| Summary of the Chapter | p. 150 |
| Exercises to Chapter 5 | p. 151 |
| Trustworthy Optimizations | p. 152 |
| Basic Concepts and Trustworthiness of Optimizations | p. 152 |
| Optimizations as Mixed Computations | p. 154 |
| Overview of the Most Common Kinds of Optimizations | p. 155 |
| Control Flow and Data Flow Dependencies | p. 162 |
| Static Single Assignment (SSA) | p. 163 |
| Data Structures Constructed and Used by the Optimizer | p. 165 |
| Optimization in Sun Studio Compilers | p. 165 |
| Optimizations of the Java Bytecode | p. 167 |
| Optimizations of the .NET Common Intermediate Language (CIL) Code | p. 170 |
| Optimizations during JIT Compilation | p. 170 |
| Exercises to Chapter 6 | p. 173 |
| Code Generation and Runtime Data Representation | p. 174 |
| Target Platforms for Code Generation | p. 174 |
| Overview of Code Generation Tasks and Goals | p. 175 |
| Specifics of Code Generation for .NET | p. 179 |
| Specifics of Code Generation for SPARC Architecture | p. 180 |
| Representing Types and Addressing Variables | p. 181 |
| Representing Procedures, Functions, and Methods | p. 186 |
| Principles of SPARC Architecture | p. 190 |
| Example of Code Generation for SPARC Architecture | p. 192 |
| Generation of Debugging Information | p. 195 |
| Code Generation for Declarations (Definitions), Expressions, and Statements | p. 197 |
| Exercises to Chapter 7 | p. 199 |
| Runtime, JIT, and AOT Compilation | p. 200 |
| The Tasks of the Runtime | p. 200 |
| The Relationship of the Runtime and the Operating System (OS) | p. 202 |
| JIT Compilation | p. 203 |
| The Architecture of FJIT-JIT Compiler for SSCLI/Rotor | p. 211 |
| The Architecture of Optimizing JIT Compiler for SSCLI/Rotor | p. 212 |
| AOT Compilation | p. 220 |
| Exercises to Chapter 8 | p. 221 |
| Graph Grammars and Graph Compilers | p. 222 |
| Basic Concepts of Graph Grammars and Graph Compilers | p. 223 |
| Categorical Approach to Graph Transformations | p. 226 |
| Reserved Graph Grammars (RGGs) | p. 230 |
| Layered Graph Grammars | p. 232 |
| Meta-Modeling Approach to Graph Grammars and Diameta Editor | p. 233 |
| Hypergraph Approach to Graph Grammars in Diagen | p. 235 |
| Graph Compiler Generation Tools | p. 237 |
| Exercises to Chapter 9 | p. 238 |
| Microsoft Phoenix, Phoenix-Targeted Tools, and Our Phoenix Projects | p. 239 |
| History of Phoenix and of Our Phoenix Projects | p. 240 |
| Overview of Phoenix Architecture | p. 242 |
| Phoenix-Based Tools, Passes, Phases, and Plug-Ins | p. 246 |
| Phoenix Primitives: Strings and Names | p. 247 |
| Phoenix Intermediate Representation (IR) | p. 248 |
| Phoenix Symbol System | p. 253 |
| Phoenix Type System | p. 257 |
| Data Flow Analysis, Control Flow Analysis, Graphs, and Static Single Assignment (SSA) in Phoenix | p. 260 |
| Overview of Other Phoenix Features | p. 264 |
| Example of a Phoenix-Based Plug-In | p. 265 |
| Phoenix-Fete-A Compiler Front-End Development Toolkit and Environment Targeted to Phoenix | p. 267 |
| Architectural Specifics of Phoenix-FETE | p. 268 |
| The Input Grammar Meta-Language | p. 269 |
| The Current Status of the Implementation | p. 271 |
| Exercises to Chapter 10 | p. 274 |
| Conclusions | p. 277 |
| References | p. 279 |
| Index | p. 285 |
| Table of Contents provided by Ingram. All Rights Reserved. |