Limit this search to....

Reasoning about Program Transformations: Imperative Programming and Flow of Data 2003 Edition
Contributor(s): Collard, Jean-Francois (Author)
ISBN: 0387953914     ISBN-13: 9780387953915
Publisher: Springer
OUR PRICE:   $52.24  
Product Type: Hardcover - Other Formats
Published: October 2002
Qty:
Annotation: The book focuses on analyses that extract the flow of data, which imperative programming hides through its use and reuse of memory in computer systems and compilers. It details some program transformations that conserve this data flow and introduces a family of analyses, called reaching definition analyses, to do this task. In addition, it shows that correctness of program transformations is guaranteed by the conservation of data flow. Professionals and researchers in software engineering, computer engineering, program design analysis, and compiler design will benefit from its presentation of data-flow methods and memory optimization of compilers.
Additional Information
BISAC Categories:
- Computers | Software Development & Engineering - General
- Computers | Programming Languages - General
- Computers | Compilers
Dewey: 005.14
LCCN: 2002017378
Physical Information: 0.67" H x 6.38" W x 9.62" (1.07 lbs) 238 pages
 
Descriptions, Reviews, Etc.
Publisher Description:
Overview The motivation of this text lies in what we believe is the inadequacy of current frameworks to reason about the ?ow 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, de?nitions based on control-?ow graphs can be overly restrictive. Dominance, studied in Chapter 4, is a good example.