FREE SHIPPING BOTH WAYS
ON EVERY ORDER!
LIST PRICE:
$149.33

OUR PRICE:
$118.27

You may extend rentals at any time.


Trustworthy Compilers

ISBN: 9780470500958 | 0470500956
Edition: 1st
Format: Hardcover
Publisher: Wiley
Pub. Date: 3/8/2010

Why Rent from Knetbooks?

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!

Top 5 reasons to order all your textbooks from Knetbooks:

  • We have the lowest prices on thousands of popular textbooks
  • Free shipping both ways on ALL orders
  • Most orders ship within 48 hours
  • Need your book longer than expected? Extending your rental is simple
  • Our customer support team is always here to help
SummaryTable of ContentsAuthor Biography
The Most Complete, Real-World Guide to CompilerDevelopment-and the Principles of Trustworthy CompilersDrawing on the author's over thirty years of expertise in compiler development, research, and instruction, Trustworthy Compilers introduces and analyzes the concept of trustworthy compilers and the principles of trustworthy compiler development, and provides analytical overview of other promising research works in this area.Vladimir Safonov shares the benefit of his long experience as a teacher and compiler development professional to explain t... MORE
Prefacep. xiii
Acknowledgmentsp. xix
Introductionp. 1
The Concept of a Trustworthy Compilerp. 2
Kinds of Compilersp. 4
Evolution of Java Compilersp. 5
Compilation for .NETp. 6
Phases of Compilationp. 7
Overview of Compiler Development Principles and Technologiesp. 8
History of Compiler Development in... MOREp. 13
Exercises to Chapter 1p. 15
Theoretical Foundations and Principles of Trustworthy Compilersp. 16
The Trustworthy Computing (TWC) Initiativep. 16
TWC and Trustworthy Compilersp. 17
Verified Compilersp. 24
Spec#: Microsoft's Approach to Verifying Compilersp. 26
Perspectives of Verified and Verifying Compilationp. 28
Exercises to Chapter 2p. 29
Lexical Analysis and Its Trustworthiness Principlesp. 31
Token Classesp. 31
The Output of the Lexical Analyzerp. 33
Processing White Spaces, Comments, and New Linesp. 34
Theoretical Models of Lexical Analysisp. 35
Lexical Errors, Error Diagnostics, and Recoveryp. 38
Processing Identifiers and Keywordsp. 38
The Architecture of a Lexical Analyzer and the Principles of Its Implementationp. 42
The Lexical Analyzer Generator Lexp. 45
Lexical Analyzer Generation in ANTLRp. 48
Exercises to Chapter 3p. 51
Parsing and Trustworthy Methods of Syntax Error Recoveryp. 52
Basic Concepts and Principles of Parsingp. 53
Recursive Descent and Simple Lookahead Mechanismp. 55
Overview of Error Recovery in Parsing: Error Recovery for Recursive Descentp. 62
LR(1) and LALR(1) Parsingp. 67
Error Recovery in LR Parsingp. 81
The Yacc Parser Generatorp. 82
The Bison Parser Generator: Generalized LR Parsingp. 87
The Yacc++, JavaCC, SableCC, ANTLR, and CoCo/R Object-Oriented Parser Generatorsp. 89
Exercises to Chapter 4p. 95
Semantic Analysis and Typing: Efficient and Trustworthy Techniquesp. 97
Basic Concepts and Principles of Semantic Analysisp. 97
Formal Model of Semantic Analysis: Attributed Grammarsp. 99
Definition Systems with Forward References and the Algorithm of Their One-Pass Analysisp. 103
Commonly Used Semantic Attributes for Program Constructsp. 107
Design Flaws of the Semantic Attribute Evaluation and Our Efficient Methods to Speed It Upp. 111
Lookup-Traditional and Novel Techniquesp. 114
Typing and Type-Checking: Basic Conceptsp. 118
Representing Types at Compile Timep. 121
Efficient Method and Algorithm to Represent and Handle Types with Structural Identityp. 123
Type Identity and Type Compatibilityp. 126
Type-Checking, Typing Error Diagnostics, and Recoveryp. 128
Code Trustworthiness Checks During Semantic Analysisp. 131
Checks for Context Restrictions in Semantic Analysisp. 139
Intermediate Code Generation-Principles and Architectural Modelsp. 141
Postfix (Reverse Polish) Notationp. 142
PCC Treesp. 146
Triplesp. 149
Summary of the Chapterp. 150
Exercises to Chapter 5p. 151
Trustworthy Optimizationsp. 152
Basic Concepts and Trustworthiness of Optimizationsp. 152
Optimizations as Mixed Computationsp. 154
Overview of the Most Common Kinds of Optimizationsp. 155
Control Flow and Data Flow Dependenciesp. 162
Static Single Assignment (SSA)p. 163
Data Structures Constructed and Used by the Optimizerp. 165
Optimization in Sun Studio Compilersp. 165
Optimizations of the Java Bytecodep. 167
Optimizations of the .NET Common Intermediate Language (CIL) Codep. 170
Optimizations during JIT Compilationp. 170
Exercises to Chapter 6p. 173
Code Generation and Runtime Data Representationp. 174
Target Platforms for Code Generationp. 174
Overview of Code Generation Tasks and Goalsp. 175
Specifics of Code Generation for .NETp. 179
Specifics of Code Generation for SPARC Architecturep. 180
Representing Types and Addressing Variablesp. 181
Representing Procedures, Functions, and Methodsp. 186
Principles of SPARC Architecturep. 190
Example of Code Generation for SPARC Architecturep. 192
Generation of Debugging Informationp. 195
Code Generation for Declarations (Definitions), Expressions, and Statementsp. 197
Exercises to Chapter 7p. 199
Runtime, JIT, and AOT Compilationp. 200
The Tasks of the Runtimep. 200
The Relationship of the Runtime and the Operating System (OS)p. 202
JIT Compilationp. 203
The Architecture of FJIT-JIT Compiler for SSCLI/Rotorp. 211
The Architecture of Optimizing JIT Compiler for SSCLI/Rotorp. 212
AOT Compilationp. 220
Exercises to Chapter 8p. 221
Graph Grammars and Graph Compilersp. 222
Basic Concepts of Graph Grammars and Graph Compilersp. 223
Categorical Approach to Graph Transformationsp. 226
Reserved Graph Grammars (RGGs)p. 230
Layered Graph Grammarsp. 232
Meta-Modeling Approach to Graph Grammars and Diameta Editorp. 233
Hypergraph Approach to Graph Grammars in Diagenp. 235
Graph Compiler Generation Toolsp. 237
Exercises to Chapter 9p. 238
Microsoft Phoenix, Phoenix-Targeted Tools, and Our Phoenix Projectsp. 239
History of Phoenix and of Our Phoenix Projectsp. 240
Overview of Phoenix Architecturep. 242
Phoenix-Based Tools, Passes, Phases, and Plug-Insp. 246
Phoenix Primitives: Strings and Namesp. 247
Phoenix Intermediate Representation (IR)p. 248
Phoenix Symbol Systemp. 253
Phoenix Type Systemp. 257
Data Flow Analysis, Control Flow Analysis, Graphs, and Static Single Assignment (SSA) in Phoenixp. 260
Overview of Other Phoenix Featuresp. 264
Example of a Phoenix-Based Plug-Inp. 265
Phoenix-Fete-A Compiler Front-End Development Toolkit and Environment Targeted to Phoenixp. 267
Architectural Specifics of Phoenix-FETEp. 268
The Input Grammar Meta-Languagep. 269
The Current Status of the Implementationp. 271
Exercises to Chapter 10p. 274
Conclusionsp. 277
Referencesp. 279
Indexp. 285
Table of Contents provided by Ingram. All Rights Reserved.
Vladimir O. Safonov is one of the leading specialists in computer science and software engineering in Russia. He is a Professor of Computer Science at St. Petersburg University and the head of the Java Technology Laboratory at the University. In 2000 and 2001, students of his department won the world championship for the ACM programming contests. Professor Safonov holds four U.S. software patents, four Russian software patents, and has published 120 papers and six books. He is the author of Using Aspect-Oriented Programming for Trustworthy Software Development (Wiley). He is the chair of the IEEE Region 8 Russia North-West Computer Society/Technology Management Council Joint Chapter. He was also a Microsoft Research 2005/2006 RFP winner for TWC and Secure Software Development.


Please wait while this item is added to your cart...