Reasoning About Program Transformations: Imperative Programming and Flow of Data
Overview The motivation of this text lies in what we believe is the inadequacy of current frameworks to reason about the flow of data in imperative programs. This inadequacy clearly shows up when dealing with the individual side effects of loop iterations. - deed, we face a paradoxical situation where, on the one hand, a typical program spends most of its execution time iterating or recursing on a few lines of codes, and, on the other hand, current optimization frameworks are clumsy when trying to capture the effects of each incarnation of these few lines—frameworks we inherited from designs made decades ago. The reasons are manyfold, but one of them stands out: The same concepts have been used, on the one hand, to represent and manipulate programs internally in compilers and, on the other hand, to allow us humans to reason about optimizations. Unfortunately, these two uses have different aims and constraints. An example of such a situation is given by control-?ow graphs of basic blocks, which have been - tremely useful in practice as an internal representation of programs, but which are not always adequate or convenient to formally think about programs and specify their transformations. In some cases, definitions based on control-?ow graphs can be overly restrictive. Dominance, studied in Chapter 4, is a good example.
1101635044
Reasoning About Program Transformations: Imperative Programming and Flow of Data
Overview The motivation of this text lies in what we believe is the inadequacy of current frameworks to reason about the flow of data in imperative programs. This inadequacy clearly shows up when dealing with the individual side effects of loop iterations. - deed, we face a paradoxical situation where, on the one hand, a typical program spends most of its execution time iterating or recursing on a few lines of codes, and, on the other hand, current optimization frameworks are clumsy when trying to capture the effects of each incarnation of these few lines—frameworks we inherited from designs made decades ago. The reasons are manyfold, but one of them stands out: The same concepts have been used, on the one hand, to represent and manipulate programs internally in compilers and, on the other hand, to allow us humans to reason about optimizations. Unfortunately, these two uses have different aims and constraints. An example of such a situation is given by control-?ow graphs of basic blocks, which have been - tremely useful in practice as an internal representation of programs, but which are not always adequate or convenient to formally think about programs and specify their transformations. In some cases, definitions based on control-?ow graphs can be overly restrictive. Dominance, studied in Chapter 4, is a good example.
54.99 In Stock
Reasoning About Program Transformations: Imperative Programming and Flow of Data

Reasoning About Program Transformations: Imperative Programming and Flow of Data

by Jean-Francois Collard
Reasoning About Program Transformations: Imperative Programming and Flow of Data

Reasoning About Program Transformations: Imperative Programming and Flow of Data

by Jean-Francois Collard

Hardcover(2003)

$54.99 
  • SHIP THIS ITEM
    In stock. Ships in 6-10 days.
  • PICK UP IN STORE

    Your local store may have stock of this item.

Related collections and offers


Overview

Overview The motivation of this text lies in what we believe is the inadequacy of current frameworks to reason about the flow of data in imperative programs. This inadequacy clearly shows up when dealing with the individual side effects of loop iterations. - deed, we face a paradoxical situation where, on the one hand, a typical program spends most of its execution time iterating or recursing on a few lines of codes, and, on the other hand, current optimization frameworks are clumsy when trying to capture the effects of each incarnation of these few lines—frameworks we inherited from designs made decades ago. The reasons are manyfold, but one of them stands out: The same concepts have been used, on the one hand, to represent and manipulate programs internally in compilers and, on the other hand, to allow us humans to reason about optimizations. Unfortunately, these two uses have different aims and constraints. An example of such a situation is given by control-?ow graphs of basic blocks, which have been - tremely useful in practice as an internal representation of programs, but which are not always adequate or convenient to formally think about programs and specify their transformations. In some cases, definitions based on control-?ow graphs can be overly restrictive. Dominance, studied in Chapter 4, is a good example.

Product Details

ISBN-13: 9780387953915
Publisher: Springer New York
Publication date: 10/16/2002
Edition description: 2003
Pages: 238
Product dimensions: 6.10(w) x 9.25(h) x 0.02(d)

Table of Contents

Basic Concepts.- Describing Program Executions.- Labels.- Analyses and Transformations.- Revisiting Some Classical Compiler Concepts.- Reaching Definition Analysis.- Applications of Reaching Definition Analysis.- Some Classical Compiler Concepts, Part II.- Data Flow and Expansion.- Single-Assignment Forms.- Maximal Static Expansion.- Parallel Languages.- Conclusion: Toward Algorithm Recognition.
From the B&N Reads Blog

Customer Reviews