Cray Pascal
This paper presents an investigation of the design decisions taken in the implementation of a compiler for Pascal on the CRAY-1 computer. The structured nature of Pascal statements and data structures is contrasted with the 'powerful computing engine' ...
Experience with porting techniques on a COBOL 74 compiler
The problems of compiler construction have largely been solved for COBOL '74, but a remaining fundamental consideration in a commercial environment is the cost of compiler development. This can be reduced by the use of portable software, but the cost of ...
An overview of the PL.8 compiler
The PL.8 compiler accepts multiple source languages and produces high quality object code for several different machines. The strategy used is to first do a simple translation of the source program to a low level intermediate language. Global ...
An experiment in table driven code generation
We have constructed a local code generator for the VAX-112 using a parser-like instruction pattern matcher. The code generator replaces the second pass of the UNIX3 Portable “Crdquo; compiler. This paper describes the design of the code generator and ...
An implementation of a code generator specification language for table driven code generators
This paper discusses an implementation of Glanville's code generator generator for producing a code generator for a production Pascal compiler on an Amdahl 470.
We successfully replaced the hand written code generator of an existing compiler with one ...
Experience with an automatic code generator generator
We implemented an automatic code generator generator based on the approach of Glanville and Graham. We describe our experience with this system and compare the generated code with that of a conventional Pascal compiler.
A practical method for syntactic error diagnosis and recovery
Our goal is to develop a practical syntactic error recovery method applicable within the general framework of viable prefix parsing. Our method represents an attempt to accurately diagnose and report all syntax errors without reporting errors that are ...
A forward move algorithm for LL and LR parsers
A wide variety of algorithms have been suggested for the repair of syntactic errors in a computer program. Since there is usually more than one possible repair for any syntax error, many algorithms employ a cost function to guide the the repair, and ...
Semantic errors - diagnosis and repair
In compiler technology, semantic error handling has too often used ad hoc techniques and terse messages of fixed content. In contrast, we present general models of diagnosis and repair of semantic errors and illustrate their use in the York Ada ...
Register allocation & spilling via graph coloring
In a previous paper we reported the successful use of graph coloring techniques for doing global register allocation in an experimental PL/I optimizing compiler. When the compiler cannot color the register conflict graph with a number of colors equal to ...
The design of a data flow analyzer
This paper presents an efficient inter-procedural data flow analysis algorithm for precisely determining aliases in programs that employ a rich set of parameter passing mechanisms and pointer data types. This approach handles the use of pointers bounded ...
Optimization of range checking
An analysis is given for optimizing run-time range checks in regions of high execution frequency. These optimizations are accomplished using strength reduction, code motion and common subexpression elimination. Test programs, using the above ...
Gprof: A call graph execution profiler
Large complex programs are composed of many small routines that implement abstractions for the routines that call them. To be useful, an execution profiler must attribute execution time in a way that is significant for the logical structure of a program ...
A facility for the downward extension of a high-level language
This paper presents a method whereby a high-level language can be extended to provide access to all the capabilities of the underlying hardware and operating system of a machine. In essence, it is a facility that allows a user to make special purpose ...
A flexible compiler structure that allows dynamic phase ordering
Traditionally, compilers have been internally organized into separate phases that are invoked in a fixed, predetermined order. However, the optimal phase invocation order is usually different for different contexts, such as (1) large batch-oriented ...
Tailoring testing to a specific compiler—experiences
The testing of the Univac UCS-Pascal compiler is described. Tests were acquired from various sources, converted from existing tests, and developed in house. Test development and execution using the Univac Test Controller System is illustrated with ...
Compiler construction using attribute grammars
The adequacy of attribute grammars as a compiler writing tool is studied on the basis of the experiences on attribute grammars for Pascal and a subset of Euclid. A qualitative assessment of the grammars shows that the compiler oriented view in the ...
LINGUIST-86: Yet another translator writing system based on attribute grammars
LINGUIST-86 is a commercially-developed translator-writing-system based on attribute grammars [K]. From an input attribute grammar it generates a set of high-level language source modules that form an alternating-pass attribute evaluator [JW]. LINGUIST-...
A truly generative semantics-directed compiler generator
This paper describes semantic processing in the compiler generating system MUG2. MUG2 accepts high-level descriptions of the semantics of a programming language including full runtime semantics, data flow analysis, and optimizing transformations. This ...
A practical method for code generation based on exhaustive search
An original method for code generation has been developed in conjunction with the construction of a compiler for the C programming language on the DEC-10 computer. The method is comprehensive, determining evaluation order and doing register allocation ...
Analyzing exotic instructions for a retargetable code generator
Exotic instructions are complex instructions, such as block move, string search, and string edit, which are found on most conventional computers. Recent retargetable code generator and instruction set analysis systems have not dealt with exotic ...
Engineering a production code generator
This paper describes the structure of a code generator formed by merging the best aspects of three code generation techniques: Graham-Glanville parser-driven code generation [G] [GG] [GR] [HG], the register allocation/spill mechanism from the Portable C ...
Experience with an experimental compiler generator based on denotational semantics
Compiler generation based on formal semantics has received considerable attention in recent years from a number of semanticists. Compiler writers, on the other hand, know relatively little about these efforts. This paper tries to remedy this situation ...
Denotational semantics as a specification of code generators
We describe the automatic generation - from the formal denotational semantic specification - of an efficient compiler's code generation phase, producing efficient code for real machines. The method has been succesfully implemented and tested with ...
Control flow aspects of semantics directed compiling (Summary)
We focus on the part of a compiler between syntax analysis and code generation. A language is specified by adding semantic rules in a functional notation to the syntax of the language. Starting with a small sublanguage of while statements, the semantics ...
An optimizing compiler for lexically scoped LISP
We are developing an optimizing compiler for a dialect of the LISP language. The current target architecture is the S-I, a multiprocessing supercomputer designed at Lawrence Livermore National Laboratory. While LISP is usually thought of as a language ...
Current status of a portable LISP compiler
This report describes the current status of a Portable LISP Compiler used with great success to compile Standard LISP on a variety of machines. It has also been used to provide a portable implementation base for a new LISP (PSL) on the DECSystem 20 and ...
An applicative compiler for a parallel machine
A compiler for the applicative language HOPE is described. The compiler is itself written in HOPE and generates a machine independent compiler target language, suitable for execution on the parallel reduction machine ALICE. The advantages of writing a ...
The linear graph package, a compiler building environment
The Linear Graph package is a collection of software tools that provides a software development environment particularly well suited to compiler construction. More precisely, the Linear Graph (or “LG”) package is a generic specification of these tools. ...
An efficient separate compilation strategy for very large programs
This paper describes the design of a compiling system that supports the efficient compilation of very large programs. The system consists of front ends for different languages, a common program database to store the intermediate code, and various back ...