Morgan Kaufmann Publishers, 1997. — 887 p. — ISBN 1-55860-320-4.This book concerns advanced issues in the design and implementation of compilers, for uniprocessors, with its major emphasis (over 60% of the text) on optimization. While it does consider machines with instruction-level parallelism, we ignore almost completely the issues of large-scale parallelization and vectorization. It begins with material on compiler structure, symbol-table management (including languages that allow scopes to be imported and exported), intermediate code structure, run-time support issues (including shared objects that can be linked to at run time), and automatic generation of code generators from machine descriptions. Next it explores methods for intraprocedural (conventionally called global) control-flow, data-flow, dependence, and alias analyses. Then a series of groups of global optimizations are described, including ones that apply to program components from simple expressions to whole procedures. Next, interprocedural analyses of control flow, data flow, and aliases are described, followed by interprocedural optimizations and use of interprocedural information to improve global optimizations. We then discuss optimizations designed to make effective use of the memory hierarchy. Finally, we describe four commercial compiler systems in detail, namely, ones from Digital Equipment Corporation, IBM, Intel, and Sun Microsystems, to provide specific examples of approaches to compiler structure, intermediate-code design, optimization choices, and effectiveness. As we shall see, these compiler systems represent a wide range of approaches and often achieve similar results in different ways.Introduction to Advanced Topics. Informal Compiler Algorithm Notation (ICAN). Symbol-Table Structure. Intermediate Representations. Run-Time Support. Producing Code Generators Automatically. Control-Flow Analysis. Data-Flow Analysis. Dependence Analysis and Dependence Graphs. Alias Analysis. Introduction to Optimization. Early Optimizations. Redundancy Elimination. Loop Optimizations. Procedure Optimizations. Register Allocation. Code Scheduling. Control-Flow and Low-Level Optimizations. Interprocedural Analysis and Optimization. Optimization for the Memory Hierarchy. Case Studies of Compilers and Future Trends.
Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.