• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Automatic Generation Of Peephole Optimizations (1984)

by Jack W. Davidson, et al.
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 12
Next 10 →

A Retargetable Technique for Predicting Execution Time

by Marion G. Harmon, T. P. Baker, David B. Whalley - In IEEE Real-Time Systems Symposium , 1992
"... Predicting the execution times of straight-line code sequences is a fundamental problem in the design and evaluation of hard-real-time systems. The reliability of system-level timings and schedulability analysis rests on the accuracy of execution time predictions for the basic schedulable units of ..."
Abstract - Cited by 82 (11 self) - Add to MetaCart
Predicting the execution times of straight-line code sequences is a fundamental problem in the design and evaluation of hard-real-time systems. The reliability of system-level timings and schedulability analysis rests on the accuracy of execution time predictions for the basic schedulable units of work. Obtaining such predictions for contemporary microprocessors is difficult. First a summary of some of the hardware and software factors that make predicting execution time difficult is presented, along with the results of experiments that evaluate the degree of variation in execution time that may be caused by these factors. Traditional methods of measuring and predicting execution time are examined, and their strengths and weaknesses discussed. Second, we present a new technique for predicting point-to-point execution times on contemporary microprocessors. This technique is called micro-analysis. It uses machine-description rules, similar to those that have proven useful for c...

Superoptimizer—a look at the smallest program

by Henry Massalin - In Proceedings of the Second International Conference on Architechtural Support for Programming Languages and Operating Systems (ASPLOS , 1987
"... Given an instruction set, the superoptimizer finds the shortest program to compute a function. Startling programs have been generated, many of them engaging in convoluted bit-fiddling bearing little resemblance to the source programs which defined the functions. The key idea in the superoptimizer is ..."
Abstract - Cited by 77 (0 self) - Add to MetaCart
Given an instruction set, the superoptimizer finds the shortest program to compute a function. Startling programs have been generated, many of them engaging in convoluted bit-fiddling bearing little resemblance to the source programs which defined the functions. The key idea in the superoptimizer is a probabilistic test that makes exhaustive searches practical for programs of useful size. The search space is defined by the processor's instruction set, which may include the whole set, but it is typically restricted to a subset. By constraining the instructions and observing the effect on the output program, one can gain insight into the design of instruction sets. In addition, superoptimized programs may be used by peephole optimizers to improve the quality of generated code, or by assembly language programmers to improve manually written code. 1.

Target-specific Global Code Improvement: Principles and Applications

by Manuel E. Benitez, Jack W. Davidson , 1994
"... This article describes the key principles behind the design and implementation of a global code improver that has been use to construct several high-quality compilers and other program transformation and analysis tools. The code improver, called vpo, employs a paradigm of compilation that has proven ..."
Abstract - Cited by 8 (0 self) - Add to MetaCart
This article describes the key principles behind the design and implementation of a global code improver that has been use to construct several high-quality compilers and other program transformation and analysis tools. The code improver, called vpo, employs a paradigm of compilation that has proven to be flexible and adaptable---all code improving transformations are performed on a target-specific representation of the program. The aggressive use of this paradigm yields a code improver with several valuable properties. Four properties stand out. First, vpo is language and compiler independent. That is, it has been used to implement compilers for several different computer languages. For the C programming language, it has been used with several front ends each of which generates a different intermediate language. Second, because all code improvements are applied to a single low-level intermediate representation, phase ordering programs are minimized. Third, vpo is easily retargeted and handles a wide variety of architectures. In particular, vpo's structure allows new architectures and new implementations of existing architectures to be accommodated quickly and easily. Fourth and finally, because of its flexible structure, vpo has several other interesting uses in addition to its primary use in an optimizing compiler. This article describes the principles that have driven the design of vpo and the implications of these principles on vpo's implementation. The article concludes with a brief description of vpo's use as a back end with front ends for several different languages, and its use as a key component

Concise Specifications of Locally Optimal Code Generators

by Andrew W. Appel , 1987
"... Dynamic programming allows locally optimal instruction selection for expression trees. More importantly, the algorithm allows concise and elegant specification of code generators. Aho, Ganapathi, and Tjiang have built the Twig code-generator-generator, which produces dynamic-programming code-generat ..."
Abstract - Cited by 7 (0 self) - Add to MetaCart
Dynamic programming allows locally optimal instruction selection for expression trees. More importantly, the algorithm allows concise and elegant specification of code generators. Aho, Ganapathi, and Tjiang have built the Twig code-generator-generator, which produces dynamic-programming code-generators from grammar-like specifications. Encoding a complex architecture as a grammar for a dynamic-programming codegenerator -generator shows the expressive power of the technique. Each instruction, addressing mode, register and class can be expressed individually in the grammar. The grammar can be factored much more readily than with the Graham-Glanville LR(1) algorithm, so it can be much more concise. Twig specifications for the VAX and MC68020 are described, and the corresponding code generators select very good (and under the right assumptions, optimal) instruction sequences. Limitations and possible improvements to the specification language are discussed. 1. Introduction One of the last...

Semantics-Directed Code Generation

by Andrew W. Appel , 1985
"... The intermediate representations (IR) used by most compilers have an operational semantics. The nodes in the graph (or tree, or quad-code sequence) have an interpretation as the operation codes of some abstract machine. A denotational semantics, in which each node in the IR graph has a static meanin ..."
Abstract - Cited by 7 (2 self) - Add to MetaCart
The intermediate representations (IR) used by most compilers have an operational semantics. The nodes in the graph (or tree, or quad-code sequence) have an interpretation as the operation codes of some abstract machine. A denotational semantics, in which each node in the IR graph has a static meaning, can lead to a clean interface between the front and back ends of the compiler. Furthermore, it is possible to concisely specify a code generator to translate the denotational representation into machine code. Combined with recent work allowing the denotational specification of front ends to translate the input language into the IR, a complete compiler with a well-defined semantics may be generated. Using this technique, compilers have been written for (most of) Pascal and C which, although they compile slowly, produce fairly good machine code. July 25, - 1 - 1 1. Introduction The intermediate representations (IR) used by most compilers have an operational semantics. The nodes in the gra...

The Design and Implementation of Genesis

by Deborah Whitfield, Mary Lou Soffa , 1994
"... This paper describes the design and implementation of Genesis and demonstrates how such a generator could be used by optimizer designers. Some experiences with the generator are also described ..."
Abstract - Cited by 6 (1 self) - Add to MetaCart
This paper describes the design and implementation of Genesis and demonstrates how such a generator could be used by optimizer designers. Some experiences with the generator are also described

Transforming Irreducible Regions of Control Flow into Reducible Regions by Optimized Node Splitting

by Sebastian Unger , 1998
"... Modern compilers apply a number of rather complex optimizations, and the research in that area is still being pursued. Many algorithms, however, have only been implemented for reducible ow graphs. Arbitrary programs may, however, result in irreducible ow graphs such that an optimizing compiler has t ..."
Abstract - Cited by 3 (0 self) - Add to MetaCart
Modern compilers apply a number of rather complex optimizations, and the research in that area is still being pursued. Many algorithms, however, have only been implemented for reducible ow graphs. Arbitrary programs may, however, result in irreducible ow graphs such that an optimizing compiler has to recognize and handle irreducibility. Three dierent methods have been used to deal with irreducible ow graphs: 1. The optimizer recognizes the aected regions and simply excludes them from certain problematic optimizations. 2. In a rst pass the irreducible ow graph is converted to a reducible one by code replication. The other optimizations can then be done eÆciently. 3. All aected optimizations are modied to handle irreducible loops. Unfortunately, this is not possible for all optimizations and even if it is possible, the modications required are rather complex. Though the second approach is simple to implement and provides a genuine solution to the problem, it is not used very of...

AgoVista - A Search Engine for Computer Scientists

by Christian S. Collberg, Christian S. Collberg, Todd A. Proebsting, Todd A. Proebsting , 2000
"... We describe AgoVista, a web-based search engine designed to allow applied computer scientists to classify problems and find algorithms and implementations that solve these problems. Unlike other search engines, AgoVista is not keyword based. Rather, users provide a set of input)output samples that d ..."
Abstract - Cited by 2 (2 self) - Add to MetaCart
We describe AgoVista, a web-based search engine designed to allow applied computer scientists to classify problems and find algorithms and implementations that solve these problems. Unlike other search engines, AgoVista is not keyword based. Rather, users provide a set of input)output samples that describe the behavior of the problem they wish to classify. This type of query-by-example requires no knowledge of specialized terminology, only an ability to formalize the problem. The search mechanism of AgoVista is based on a novel application of program checking, a technique developed as an alternative to program verification and testing. 1 Background Frequently, working software developers will encounter a problem with which they are unfamiliar, but which -- they suspect -- has probably been treated by the Computer Science theory community. Just as frequently, theoretical computer scientists will be working on a problem which they suspect might have a practical application. Unfortunat...

Motivation

by Computer Program, Marion G. Harmon
"... ming schema presented in [8]. Although their method has the advantage of being partly machine independent, the effects of optimizations performed by the compiler make it difficult to predict the exact code emitted by the compiler from their source-level schemata. Shaw acknowledges that although his ..."
Abstract - Add to MetaCart
ming schema presented in [8]. Although their method has the advantage of being partly machine independent, the effects of optimizations performed by the compiler make it difficult to predict the exact code emitted by the compiler from their source-level schemata. Shaw acknowledges that although his approach seems to work well when applied to deterministic hardware, more research is needed to determine timing predictability on contemporary machines. A method very similar to that of Park and Shaw is presented by Puschner and Koza [7]. A New Approach Our approach was influenced by research results produced in the area of compiler writing, in particular work by Davidson and Fraser [1] involving retargetable peephole optimizers. We adapted the idea of usings a machine description of the target processor and a rule driven pattern matching scheme to identify instances of parallel execution of instructions (overlap) common in contemporary machines. The method has th

An Experiment in Mixed Compilation/Interpretation

by Gough Cifuentes Corney, K J Gough, C Cifuentes, D Corney, J Hynd, P Kolb - Proceedings of ACSC-14, Australian Computer Society , 1992
"... One of the classic forms of intermediate representation used for communication between compiler front-ends and back-ends are those based on abstract stack machines. It is possible to compile the stack machine instructions into machine code by means of an interpretive code generator, or to simulate t ..."
Abstract - Add to MetaCart
One of the classic forms of intermediate representation used for communication between compiler front-ends and back-ends are those based on abstract stack machines. It is possible to compile the stack machine instructions into machine code by means of an interpretive code generator, or to simulate the stack machine at runtime using an interpreter. This paper describes an approach intermediate between these two extremes. The front-end for a commercial Modula 2 compiler was ported to the "industry standard PC", and a partially compiling back-end written. The object code runs with the assistance of an interpreter, but may be linked with libraries which are fully compiled. The intent was to provide a programming environment on the PC which is identical to that of the same compilers on 32-bit UNIX machines. This objective has been met, and the compiler is available to educational institutions as free-ware. The design basis of the new compiler is described, and the performance critically evaluated. [Key words and phrases: compilers, interpretive code generation, abstract stack machines.] 1
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University