【内容简介】
作为编译器设计的教程,本书重点主要放在解决设计语言翻泽器过程中普遍需要面对的一些问题上,而并不考虑源语言或者目标机器。本书共 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
<< 查看详细目录
【前言】
从本书的1986版出版到现在,编译器设计的世界已经发生了很大的改变。程序设计语言的发展提出了新的编译问题。计算机体系结构提供了多种多样的资源,而编译器设计者必须能够充分利用这些资源。可能最有意思的事情是,古老的代码优化技术已经在编译器之外找到了新的应用。现在,这些技术被有些工具用于寻找软件中的错误,以及最重要的是,寻找现有代码中的安全漏洞。并且,很多“前端”技术——文法、正则表达式、语法分析器以及语法制导翻译器等——仍然被广泛应用。.
因此,本书的先前版本所体现的我们的价值观一直没有改变。我们认识到只有很少的读者将会去构建甚至维护一个主流程序设计语言的编译器。但是,和..
<< 查看前言