79 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| .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
 | |
| .]
 |