80 lines
2.1 KiB
Plaintext
80 lines
2.1 KiB
Plaintext
.TL
|
|
The design and implementation of
|
|
the EM Global Optimizer
|
|
.AU
|
|
H.E. Bal
|
|
.AI
|
|
Vrije Universiteit
|
|
Wiskundig Seminarium, Amsterdam
|
|
.AB
|
|
The EM Global Optimizer is part of the Amsterdam Compiler Kit,
|
|
a toolkit for making retargetable compilers.
|
|
It optimizes the intermediate code common to all compilers of
|
|
the toolkit (EM),
|
|
so it can be used for all programming languages and
|
|
all processors supported by the kit.
|
|
.PP
|
|
The optimizer is based on well-understood concepts like
|
|
control flow analysis and data flow analysis.
|
|
It performs the following optimizations:
|
|
Inline Substitution, Strength Reduction, Common Subexpression Elimination,
|
|
Stack Pollution, Cross Jumping, Branch Optimization, Copy Propagation,
|
|
Constant Propagation, Dead Code Elimination and Register Allocation.
|
|
.PP
|
|
This report describes the design of the optimizer and several
|
|
of its implementation issues.
|
|
.AE
|
|
.bp
|
|
.NH 1
|
|
Introduction
|
|
.PP
|
|
.FS
|
|
This work was supported by the
|
|
Stichting Technische Wetenschappen (STW)
|
|
under grant VWI00.0001.
|
|
.FE
|
|
The EM Global Optimizer is part of a software toolkit
|
|
for making production-quality retargetable compilers.
|
|
This toolkit,
|
|
called the Amsterdam Compiler Kit
|
|
.[
|
|
tanenbaum toolkit rapport
|
|
.]
|
|
.[
|
|
tanenbaum toolkit cacm
|
|
.]
|
|
runs under the Unix*
|
|
.FS
|
|
*Unix is a Trademark of Bell Laboratories
|
|
.FE
|
|
operating system.
|
|
.sp 0
|
|
The main design philosophy of the toolkit is to use
|
|
a language- and machine-independent
|
|
intermediate code, called EM.
|
|
.[
|
|
keizer architecture
|
|
.]
|
|
The basic compilation process can be split up into
|
|
two parts.
|
|
A language-specific front end translates the source program into EM.
|
|
A machine-specific back end transforms EM to assembly code
|
|
of the target machine.
|
|
.PP
|
|
The global optimizer is an optional phase of the
|
|
compilation process, and can be used to obtain
|
|
machine code of a higher quality.
|
|
The optimizer transforms EM-code to better EM-code,
|
|
so it comes between the front end and the back end.
|
|
It can be used with any combination of languages
|
|
and machines, as far as they are supported by
|
|
the compiler kit.
|
|
.PP
|
|
This report describes the design of the
|
|
global optimizer and several of its
|
|
implementation issues.
|
|
Measurements can be found in.
|
|
.[
|
|
bal tanenbaum global
|
|
.]
|