Название: Compilers: Principles, Techniques, and Tools, Updated 2nd Edition Автор: Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman Издательство: Pearson Год: 2023 Страниц: 1354 Язык: английский Формат: epub Размер: 15.3 MB
Pearson’s flagship title Compilers: Principles, Techniques and Tools, known to professors, students, and developers worldwide as the "Dragon Book," is available in a new edition to reflect the current state of compilation. This book provides the foundation for understanding the theory and practice of compilers.
Revised and updated with new chapters on Programming Language Semantics and Undefined Behaviour Semantics, the title addresses modern issues in compiler design. However, 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.
Features:
Covers important topics such-as context-free grammars, fine state machines, and syntax-directed translation
Presents the five methods for translation to explain syntax-directed translation Illustrates new techniques for data-flow analysis that emphasize the unity of code optimization and other program analysis software
Uses code optimization to work with parallel machines
Explains just-in-time compiling with programming languages such as Java
Includes online video lectures to enhance learning experience Here is an outline of the chapters: • Chapter 1 contains motivational material and also presents some background issues in computer architecture and programming-language principles. • Chapter 2 develops a miniature compiler and introduces many of the important concepts, which are then developed in later chapters. The compiler itself appears in the appendix. • Chapter 3 covers lexical analysis, regular expressions, finite-state machines, and scanner-generator tools. This material is fundamental to text-processing of all sorts. • Chapter 4 covers the major parsing methods, top-down (recursive-descent, LL) and bottom-up (LR and its variants). • Chapter 5 introduces the principal ideas in syntax-directed definitions and syntax-directed translations. • Chapter 6 takes the theory of Chapter 5 and shows how to use it to generate intermediate code for a typical programming language. • Chapter 7 covers run-time environments, especially management of the run-time stack and garbage collection. • Chapter 8 is on object-code generation. It covers construction of basic blocks, generation of code from expressions and basic blocks, and register-allocation techniques. • Chapter 9 introduces the technology of code optimization, including flow graphs, data-flow frameworks, and iterative algorithms for solving these frameworks. • Chapter 10 covers instruction-level optimization. The emphasis is on the extraction of parallelism from small sequences of instructions and scheduling them on single processors that can do more than one thing at once. • Chapter 11 talks about larger-scale parallelism detection and exploitation. Here, the emphasis is on numeric codes that have many tight loops that range over multidimensional arrays. • Chapter 12 introduces the formal specification of programming language semantics. Formal semantics define a program’s execution behavior with mathematical precision, and are usually necessary to precisely define the transformation space of an optimizing compiler. • Chapter 13 introduces semantics associated with undefined behavior in the source and intermediate representations of a program, and describes its implications on optimization opportunity.
Prerequisites: The reader should possess some “computer-science sophistication,” including at least a second course on programming, and courses in data structures and discrete mathematics. Knowledge of several different programming languages is useful.
Скачать Compilers: Principles, Techniques, and Tools, Updated 2nd Edition
|