This book provides the foundation for understanding the theory and pracitce of compilers. Revised and updated, it reflects the current state of compilation. 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. Computer scientists, developers, and aspiring students that want to learn how to build, maintain, and execute a compiler for a major programming language.
1 Introduction
1.1 Language Processors
1.2 The Structure of a Compiler
1.3 The Evolution of Programming Languages
1.4 The Science of Building a Compiler
1.5 Applications of Compiler Technology
1.6 Programming Language Basics
1.7 Summary of Chapter 1
1.8 References for Chapter 1
2 A Simple Syntax-Directed Translator
2.1 Introduction
2.2 Syntax Definition
2.3 Syntax-Directed Translation
2.4 Parsing
2.5 A Translator for Simple Expressions
2.6 Lexical Analysis
2.7 Symbol Tables
2.8 Intermediate Code Generation
2.9 Summary of Chapter 2
3 Lexical Analysis
3.1 The Role of the Lexical Analyzer
3.2 Input Buffering
3.3 Specification of Tokens
3.4 Recognition of Tokens
3.5 The Lexical-Analyzer Generator Lex
3.6 Finite Automata
3.7 From Regular Expressions to Automata
3.8 Design of a Lexical-Analyzer Generator
3.9 Optimization of DFA-Based Pattern Matchers
3.10 Summary of Chapter 3
3.11 References for Chapter 3
4 Syntax Analysis
4.1 Introduction
4.2 Context-Free Grammars
4.3 Writing a Grammar
4.4 Top-Down Parsing
4.5 Bottom-Up Parsing
4.6 Introduction to LR Parsing: Simple LR
4.7 More Powerful LR Parsers
4.8 Using Ambiguous Grammars
4.9 Parser Generators
4.10 Summary of Chapter 4
4.11 References for Chapter 4
5 Syntax-Directed Translation
5.1 Syntax-Directed Definitions
5.2 Evaluation Orders for SDD's
5.3 Applications of Syntax-Directed Translation
5.4 Syntax-Directed Translation Schemes
5.5 Implementing L-Attributed SDD's
5.6 Summary of Chapter 5
5.7 References for Chapter 5
6 Intermediate-Code Generation
6.1 Variants of Syntax Trees
6.2 Three-Address Code
6.3 Types and Declarations
6.4 Translation of Expressions
6.5 Type Checking
6.6 Control Flow
6.7 Backpatching
6.8 Switch-Statements
6.9 Intermediate Code for Procedures
6.10 Summary of Chapter 6
6.11 References for Chapter 6
7 Run-Time Environments
7.1 Storage Organization
7.2 Stack Allocation of Space
7.3 Access to Nonlocal Data on the Stack
7.4 Heap Management
7.5 Introduction to Garbage Collection
7.6 Introduction to Trace-Based Collection
7.7 Short-Pause Garbage Collection
7.8 Advanced Topics in Garbage Collection
7.9 Summary of Chapter 7
7.10 References for Chapter 7
8 Code Generation
8.1 Issues in the Design of a Code Generator
8.2 The Target Language
8.3 Addresses in the Target Code
8.4 Basic Blocks and Flow Graphs
8.5 Optimization of Basic Blocks
8.6 A Simple Code Generator
8.7 Peephole Optimization
8.8 Register Allocation and Assignment
8.9 Instruction Selection by Tree Rewriting
8.10 Optimal Code Generation for Expressions
8.11 Dynamic Programming Code-Generation
8.12 Summary of Chapter 8
8.13 References for Chapter 8
9 Machine-Independent Optimizations
9.1 The Principal Sources of Optimization
9.2 Introduction to Data-Flow Analysis
9.3 Foundations of Data-Flow Analysis
9.4 Constant Propagation
9.5 Partial-Redundancy Elimination
9.6 Loops in Flow Graphs
9.7 Region-Based Analysis
9.8 Symbolic Analysis
9.9 Summary of Chapter 9
9.10 References for Chapter 9
10 Instruction-Level Parallelism
10.1 Processor Architectures
10.2 Code-Scheduling Constraints
10.3 Basic-Block Scheduling
10.4 Global Code Scheduling
10.5 Software Pipelining
10.6 Summary of Chapter 10
10.7 References for Chapter 10
11 Optimizing for Parallelism and Locality
11.1 Basic Concepts
11.2 Matrix Multiply: An In-Depth Example
11.3 Iteration Spaces
11.4 Affine Array Indexes
11.5 Data Reuse
11.6 Array Data-Dependence Analysis
11.7 Finding Synchronization-Free Parallelism
11.8 Synchronization Between Parallel Loops
11.9 Pipelining
11.10 Locality Optimizations
11.11 Other Uses of Affine Transforms
11.12 Summary of Chapter 11
11.13 References for Chapter 11
12 Interprocedural Analysis
12.1 Basic Concepts
12.2 Why Interprocedural Analysis?
12.3 A Logical Representation of Data Flow
12.4 A Simple Pointer-Analysis Algorithm
12.5 Context-Insensitive Interprocedural Analysis
12.6 Context-Sensitive Pointer Analysis
12.7 Datalog Implementation by BDD's
12.8 Summary of Chapter 12
12.9 References for Chapter 12
A A Complete Front End
A.1 The Source Language
A.2 Main
A.3 Lexical Analyzer
A.4 Symbol Tables and Types
A.5 Intermediate Code for Expressions
A.6 Jumping Code for Boolean Expressions
A.7 Intermediate Code for Statements
A.8 Parser
A.9 Creating the Front End
B Finding Linearly Independent Solutions
Index
TRIZ理论入门导读,ISBN:9787538855555,作者:黑龙江省科学技术厅目录 TRIZ介绍1.创新方法2.TRIZ理论3.“TRIZ之父”——G.
《大数据区块链金融:贵阳的实践与思考》内容简介:《大数据区块链金融》一书从理论支撑、政策支持、学术研究、区块链联盟组织、区
聞名全球的「frogdesign」(青蛙設計)如何在經濟大衰退之際,還能締造破記錄營收。‧高科技設計超級巨星哈特姆.艾斯林格(青蛙設計
Overthepasttwodecades,nofieldofscientificinquiryhashadamorestrikingimpactacrossa...
在内容上,《Android系统源代码情景分析(修订版)(含CD光盘1张)》结合使用情景,全面、深入、细致地分析了Android系统的源代码
电脑组装.维护.故障排除简明教程 本书特色 《电脑组装、维护、故障排除简明教程》以就业为导向,以培养实用型人才为目标,注重实训教学,实现理论教学与实践教学的有机...
《价值投资之茅台大博弈》内容简介:2010~2018年,知名投资人董宝珍重仓持有贵州茅台,经历了跌宕起伏的投资历程,其间他写作了数百
《英国陶艺设计基础教程》是一本陶艺设计的完全指导手册,融合了理论、实践、技术三方面的重点,你可以通过《英国陶艺设计基础教
Apache是目前全球最广为使用的网页服务器。虽然Apache管理人员可以找到大量的与安装及配置设定相关的文件说明,但想从中找出适合
《先学会爱自己,再遇见对的你》内容简介:在这本书出版之际,周梵与她先生的婚姻马上要进入第十个年头。从相爱到婚姻的十四年里,
《财团首户:无锡荣家》内容简介:本书为“中国近代实业家丛书”中的无锡荣氏家族卷。习近平总书记在企业家座谈会与考察江苏期间两
《软件开发的201个原则》内容简介:本书汇总了软件工程原则。原则是关于软件工程的基本原理、规则或假设,不管所选的技术、工具或语
计算机组成原理(第2版) 本书特色 本书系统地介绍了计算机的组成及其工作原理。全书共分7章,第1章概要介绍计算机的硬件结构、工作过程及性能指标;第2章介绍数据的...
《中国审美文化焦点问题研究》内容简介:中国古代美学思想具有若干复杂而深刻的核心问题,其中一些话题具有非常强大的延伸能力,旁
《名院名医孕产育儿全程指导方案:40周幸福怀孕》内容简介:在40周的孕期生活中,孕妈妈的身体会发生怎样的变化?胎宝宝会按照怎样
全国计算机等级考试教程二级公共基础知识 本书特色 《全国计算机等级考试教程——二级公共基础知识》依据教育部考试中心*新发布的《全国计算机等级考试大纲》以及作者多...
《张晋张谦集校笺》内容简介:本书为“清代诗人别集丛刊”中的一种,着眼于深度整理清初甘肃著名诗人张晋和张谦的诗集。书稿整理了
Thedefactostandard-amust-haveforallLISPprogrammers.Inthisgreatlyexpandededitiono...
《CAE分析大系:ABAQUS工程实例详解》内容简介:本书基于全新的机电工程实际案例,以基本理论、分析思路、标准操作流程(SOP)和结果
Printedentirelyincolor,withhelpfulfiguresandsyntaxcoloringtomakecodesamplesappea...