Pristine Ack-5.5
[Ack-5.5.git] / doc / ego / intro / intro1
1 .TL
2 The design and implementation of
3 the EM Global Optimizer
4 .AU
5 H.E. Bal
6 .AI
7 Vrije Universiteit
8 Wiskundig Seminarium, Amsterdam
9 .AB
10 The EM Global Optimizer is part of the Amsterdam Compiler Kit,
11 a toolkit for making retargetable compilers.
12 It optimizes the intermediate code common to all compilers of
13 the toolkit (EM),
14 so it can be used for all programming languages and
15 all processors supported by the kit.
16 .PP
17 The optimizer is based on well-understood concepts like
18 control flow analysis and data flow analysis.
19 It performs the following optimizations:
20 Inline Substitution, Strength Reduction, Common Subexpression Elimination,
21 Stack Pollution, Cross Jumping, Branch Optimization, Copy Propagation,
22 Constant Propagation, Dead Code Elimination and Register Allocation.
23 .PP
24 This report describes the design of the optimizer and several
25 of its implementation issues.
26 .AE
27 .bp
28 .NH 1
29 Introduction
30 .PP
31 .FS
32 This work was supported by the
33 Stichting Technische Wetenschappen (STW)
34 under grant VWI00.0001.
35 .FE
36 The EM Global Optimizer is part of a software toolkit
37 for making production-quality retargetable compilers.
38 This toolkit,
39 called the Amsterdam Compiler Kit
40 .[
41 tanenbaum toolkit rapport
42 .]
43 .[
44 tanenbaum toolkit cacm
45 .]
46 runs under the Unix*
47 .FS
48 *Unix is a Trademark of Bell Laboratories
49 .FE
50 operating system.
51 .sp 0
52 The main design philosophy of the toolkit is to use
53 a language- and machine-independent
54 intermediate code, called EM.
55 .[
56 keizer architecture
57 .]
58 The basic compilation process can be split up into
59 two parts.
60 A language-specific front end translates the source program into EM.
61 A machine-specific back end transforms EM to assembly code
62 of the target machine.
63 .PP
64 The global optimizer is an optional phase of the
65 compilation process, and can be used to obtain
66 machine code of a higher quality.
67 The optimizer transforms EM-code to better EM-code,
68 so it comes between the front end and the back end.
69 It can be used with any combination of languages
70 and machines, as far as they are supported by
71 the compiler kit.
72 .PP
73 This report describes the design of the
74 global optimizer and several of its
75 implementation issues.
76 Measurements can be found in.
77 .[
78 bal tanenbaum global
79 .]