内容简介
作为编译器设计的教程,本书重点主要放在解决设计语言翻泽器过程中普遍需要面对的一些问题上,而并不考虑源语言或者目标机器。本书共 12章。第一章是一些关于学习动机的资料,同时也给出了一些关于计算机体系结构和程序设计语言原理的背景知识。第二章开发了一个缩微的编译器,并介绍了很多重要的概念,这些概念将在后面的各个章节中深入介绍。这个编译器本身在附录中给出。第三章讨论了词法分析、正则表达式、有穷状态自动机和词法分析器的生成工具,这些内容是各种正文处理的基础。第四章讨论了主流的语法分析方法,包括自顶向下方法(递归下降法, LL技术)和自底向上方法(LR技术和它的变体)。第五章介绍了语法制导定义和语法制导翻译的基本思想。第六章介绍了如何使用第五章中的理论为一个典型的程序设计语言生成中间代码。第七章讨论了运行时刻环境,主要是运行时刻栈的管理和垃圾收集机制。第八章介绍了关于目标代码生成的内容,主要讨论了基本块的构造,从表达式和基本块生成代码的方法,以及寄存器分配技术。第九章介绍了代码优化技术,包括流图、数据流分析框架以及求解这些框架的迭代算法。第十章讨论了指令级优化。该章的重点是从小段指令代码中抽取并行性,并在那些可以同时做多件事情的单处理器上调度这些指令。第十一章讲的是大规模并行的检测和利用。这章的重点是数值计算代码,这些代码具有对多维数组进行遍历的紧致循环。第十二章介绍的是关于过程间分析技术的内容,讨论了指针分析、别名和数据流分析,这些分析中都考虑了到达代码中某个给定点时的过程调用序列。
本书可作为高校计算机专业本科和研究生编译原理的教科书,也可供从事计算机软件开发的人员参考。
编辑推荐
经典“龙”书的这一个新版本经过了全面的修订,包含了编译技术中的新进展。这本书全面地介绍了编译器的设计,并继续强调编译技术在软件和开发中的广泛应用。本书的前半部分被设计用于本科编译课程,而后半部分可以用于着重于代码优化的研究生课程。
目录
1 Introduction
1.1 Language Processors
1.1.1 Exercises for Section 1.1
1.2 The Structure of a Compiler
1.2.1 Lexical Analysis
1.2.2 Syntax Analysis
1.2.3 Semantic Analysis
1.2.4 Intermediate Code Generation
1.2.5 Code Optimization
1.2.6 Code Generation
1.2.7 Symbol-Table Management
1.2.8 The Grouping of Phases into Passes
1.2.9 Compiler-Construction Tools
1.3 The Evolution of Programming Languages
1.3.1 The Move to Higher-level Languages
1.3.2 Impacts on Compilers
1.3.3 Exercises for Section 1.3
1.4 The Science of Building a Compiler
1.4.1 Modeling in Compiler Design and Implementation
1.4.2 The Science of Code Optimization
1.5 Applications of Compiler Technology
1.5.1 Implementation of High-Level Programming Languages
1.5.2 Optimizations for Computer Architectures
1.5.3 Design of New Computer Architectures
1.5.4 Program Translations
1.5.5 Software Productivity Tool..