This compiler design and implementation site aims to provide book reviews and free ebook on compiler design handbook, advanced compiler design, modern compiler design, compiler design tools like lex, yaac, flex, Automata techniques and practical design using c++.
Showing posts with label Advanced Compilers. Show all posts
Showing posts with label Advanced Compilers. Show all posts

Advanced Compiler Construction

By Professor Keith D. Cooper and Dr. Timothy J. Harvey
This advanced compiler construction ebook describes compiler design techniques in a wonderful way. Following are the various compiler construction topics covered in this ebook.
  • Introduction to Optimization
  • The Fortran H Compiler
  • Value Numbering as an Introduction to Optimization,
  • Global Analysis (& Optimization)
  • More on Data-flow Analysis
  • Allen-Cocke Interval Analysis
  • Proliferation of Data-flow Analysis Problems
  • Static Single Assignment Form
  • Using SSA: Dead Code Elimination and Constant Propagation
  • Order from Chaos: The COMP 512 Taxonomy
  • Profile-guided Code Positioning
  • CLEAN: Removing Useless Control Flow
  • Operator Strength Reduction
  • Lazy Code Motion
  • Algebraic Reassociation of Expressions
  • Code Replication
  • Code Motion of Control Structures
  • Optimization of Range Checking
  • IBM's PL.8 Compiler
  • Compiling for Reduced Energy Consumption
  • Register Allocation Via Graph Coloring
  • Instruction Scheduling: Introduction & Local List Scheduling
  • Instruction Scheduling: Randomization, Register Pressure, and More,
  • Balanced scheduling
  • Instruction Scheduling: Software Pipelining
  • Instruction Scheduling: More Software Pipelining and Other Superlocal Techniques
  • Ten Hardware Features that Affect Optimization
  • Register Allocation via Hierarchical Graph Coloring
  • Interprocedural Analysis and Optimization
  • Dynamic Compilation in an OOL: The Deutsch-Schiffman Impementation of Smalltalk-80
  • Dynamic (or runtime) Optimization

Click to Read More/Download

Advanced Programming Language Design

By Raphael A. Finkel
This book stems in part from courses taught at the University of Kentucky and at the University of Wisconsin–Madison on programming language design. There are many good books that deal with the subject at an undergraduate level, but there are few that are suitable for a one- semester graduatelevel course. This book is my attempt to fill that gap.

The goal of this course, and hence of this book, is to expose first-year graduate students to a wide range of programming language paradigms and issues, so that they can understand the literature on programming languages and even conduct research in this field. It should improve the students’ appreciation of the art of designing programming languages and, to a limited degree, their skill in programming.

This book does not focus on any one language, or even on a few languages; it mentions, at least in passing, over seventy languages, including wellknown ones (Algol, Pascal, C, C++, LISP, Ada, FORTRAN), important but less known ones (ML, SR, Modula-3, SNOBOL), significant research languages (CLU, Alphard, Linda), and little-known languages with important concepts (Io, Go..del). Several languages are discussed in some depth, primarily to reinforce particular programming paradigms. ML and LISP demonstrate functional programming, Smalltalk and C++ demonstrate object-oriented programming, and Prolog demonstrates logic programming.

Students are expected to have taken an undergraduate course in programming languages before using this book. The first chapter includes a review of much of the material on imperative programming languages that would be covered in such a course. This review makes the book self-contained, and also makes it accessible to advanced undergraduate students.

Most textbooks on programming languages cover the well-trodden areas of the field. In contrast, this book tries to go beyond the standard territory, making brief forays into regions that are under current research or that have been proposed and even rejected in the past. There are many fascinating constructs that appear in very few, if any, production programming languages.

Some (like power loops) should most likely not be included in a programming language. Others (like Io continuations) are so strange that it is not clear how to program with them. Some (APL arrays) show alternative ways to structure languages. These unusual ideas are important even though they do not pass the test of current usage, because they elucidate important aspects of programming language design, and they allow students to evaluate novel concepts.

Followers