本书迎接现代语言和体系结构的挑战,帮助读者作好准备,去应对将来要遇到的编译器设计的问题。本书涵盖现代微处理器编译器的设计和实现方面的所有高级主题。本书从编译设计基础领域中的高级问题开始,广泛而深入地阐述各种重要的代码优化技术,分析各种优化之间的相对重要关系,以及实现这些优化的最有效方法。本书特点●为理解高级编译器设计的主要问题奠定了基础●深入阐述优化问题●用Sun的SPARC、IBM的POWER和PowerPC、DEC的Alpha以及Intel的Pentium和相关商业编译器作为案例,说明编译器结构、中间代码设计和各种优化方法●给出大量定义清晰的关于代码生成、优化和其他问题的算法●介绍由作者设计的以清晰、简洁的方式描述算法的语言ICAN(非形式编译算法表示)。本书前言本书讨论单机编译器设计和实现技术领域的前沿问题,重点讨论编译优化技术(超过了本书60%的篇幅)。我们考虑了支持指令级并行的机器,但几乎完全忽略了大规模并行处理和向量处理的有关问题。本书首先讨论编译器的结构、符号表管理(包括那些允许导入和导出作用域的语言)、中间代码结构、运行时支持问题(包括可以在运行时链接的共享对象),以及根据机器描述自动产生代码生成器等。之后,探讨过程内的(通常称为“全局的”)控制流分析、数据流分析、依赖关系分析和别名分析的各种方法,并介绍一系列的全局优化,包括那些作用于程序不同成分(从单个表达式到整个过程)的优化。接下来本书讲述过程间的控制流分析、数据流分析和别名分析,以及过程间优化和如何应用过程间信息来改善全局优化。然后,讨论有效利用层次存储系统的优化技术。最后,详细介绍4个分别来自DEC、IBM、Intel和Sun微系统公司的商业化编译系统,以提供编译器结构、中间代码设计、优化策略和效果的专门例子。如我们将看到的,这些编译系统采用的技术具有广泛的代表性,并用不同的方法获得了类似的效果。