Code generation by coagulation
This paper describes a new approach to code-generation. The central tenet is that there must be a more intimate coupling between register allocation and instruction selection than exists in present-day technology. This is achieved by generating code in ...
Using dynamic programming to generate optimized code in a Graham-Glanville style code generator
We have performed an investigation of using a dynamic programming to generate optimized code in a Graham-Glanville style code generator We use Earley's algorithm rather than an IR algorithm for parsing in the code generator Not only does the use of ...
Parallel processing: a smart compiler and a dumb machine
Multiprocessors and vector machines, the only successful parallel architectures, have coarse-grained parallelism that is hard for compilers to take advantage of. We've developed a new fine-grained parallel architecture and a compiler that together offer ...
Efficient compilation of lazy evaluation
This paper describes the principles underlying an efficient implementation of a lazy functional language, compiling to code for ordinary computers. It is based on combinator-like graph reduction: the user defined functions are used as rewrite rules in ...
Sub-protocol-evaluators for attribute grammars
This paper presents a new strategy for evaluating attribute grammars, sub-protocol attribute evaluation, and gives an algorithm for constructing sub-protocol-evaluators. Sub-protocol-evaluators can be built for any non-circular attribute grammar; this ...
Strongly non-circular attribute grammars and their recursive evaluation
This paper is devoted to the construction of recursive evaluators for strongly non-circular attribute grammars. This class of attribute grammars is very large and includes every practical example ; testing strong non-circularity can be done in ...
Compiler prototyping using formal semantics
The descriptive techniques of formal semantics can be used for the generation of complete prototype compilers. First, we review the essential characteristics of such semantics implementation systems, and discuss our experience with two existing ...
Peep: an architectural description driven peephole optimizer
Peep is an architectural description driven peephole optimizer, that is being adapted for use in the Portable Standard Lisp compiler. Tables of optimizable instructions are generated prior to the creation of the compiler from the architectural ...
Automatic generation of peephole optimizations
This paper describes a system that automatically generates peephole optimizations. A general peephole optimizer driven by a machine description produces optimizations at compile-compile time for a fast, pattern-directed, compile-time optimizer. They ...
Analyzing and compressing assembly code
This paper describes the application of a general data compression algorithm to assembly code. The system is retargetable and generalizes cross-jumping and procedural abstraction. It can be used as a space optimizer that trades time for space, it can ...
Incremental compilation in Magpie
Magpie is an interactive, integrate programming environment that supports the development of Pascal programs a powerful, single-user workstation. Incremental compilation techniques are used to provide quick feedback on static errors and to ensure that a ...
Incremental data flow analysis in a structured program editor
For many years, the generally accepted methods for solving global data flow analysis problems (GDFAPs) have relied on the bit vector paradigm [Alle 70] [Kenn 81]. In these algorithms, the information for each variable is represented as a position in a ...
An approach to incremental compilation
This paper describes an approach to incremental compilation that allows a complete incremental compiler to be generated from a simple language description. This description is in two parts. The first consists of an abstract syntax annotated with a ...
Attribute coupled grammars
In this paper, attribute grammars are viewed as specifying translations from source language terms into target language terms. The terms are constructed over a hierarchical signature consisting of a semantic and a syntactic part. Attribute grammars are ...
A specification language for one-pass semantic analysis
A new language is introduced for the specification of semantic analysis of programming languages. The language is based on the concept of one-pass attribute grammars. Various extensions of this basic formalism are incorporated in the language, including ...
Tree transformation techniques and experiences
A formal description technique for describing transformations from one well-defined language to another is introduced. A TT-grammar contains context-free grammars for describing the syntax of both languages. The transformation between the languages is ...
A semantic prototyping system
We have written a set of computer programs for testing and exercising programming language specifications given in the style of denotational semantics. The system is built largely in Scheme 84, a dialect of LISP that serves as an efficient lambda-...
Register allocation by priority-based coloring
The classic problem of global register allocation is treated in a heuristic and practical manner by adopting the notion of priorities in node-coloring. The assignment of priorities is based on estimates of the benefits that can be derived from ...
Automatic loop interchange
Parallel and vector machines are becoming increasingly important to many computation intensive applications. Effectively utilizing such architectures, particularly from sequential languages such as Fortran, has demanded increasingly sophisticated ...
An efficient implementation of visibility in Ada
This paper discusses the efficient implementation of Ada's visibility requirements. A scope stack and an unstructured name space are used to facilitate separate compilation and ensure that each Ada declaration takes a constant unit of time. Visibility ...
Inline routines in VAXELN Pascal
This paper describes the implementation of inline procedures and functions inthe VAXELN Pascal compiler. Inline expansion translates the reverse Polish text produced by the parser into an intermediate language like that used in the VAX-11 PL/I and C ...
Sharing code among instances of Ada generics
This paper describes the aspects of the Ada compiler for the Air Force Ada Integrated Environment (AIE) that are concerned with sharing code among generic instances. Sharing is achieved by forming equivalence classes of generic instances and sharing ...
Type checking, separate compilation and reusability
A strategy for performing type checking on programs built out of separately compiled parts is presented. This strategy is used in a programming environment that allows small components of a software system to be reconfigured in different ways. The ...
Static checking of interprocess communication in ECSP
The structure of a compiler for the ECSP language is described. ECSP is a concurrent language extending Hoare's CSP: it supports dynamic communication channels and nested processes. The compilation of ECPS programs is obtained by the composition of ...
Subjects
Currently Not Available