COINS Compiler Infrastructure
1. Aims of the project
COINS (COmpiler INfraStructure) is a project to develop a compiler infrastructure which may be used as a base for constructing various compilers such as research compilers, educational compilers, and production compilers. COINS has two levels of intermediate representation, HIR: High-level Intermediate Representation, and LIR: Low-level Intermediate Representation. The infrastructure is composed of many components, such as front-ends, back-ends, various kind of optimizing and parallelizing modules. Optimizations and parallelizations are applied to HIR or LIR. Compiler developers can construct a compiler by selecting appropriate components. They may add their own components or modify some existing components to add new features to their compiler. The main aim of the project is to help compiler developers build good compilers in relatively short term and accelerate the development of compiler technology.
2. Benefit of using the COINS infrastructure
New compiling techniques can be implemented by adding or modifying a component without writing the rest of the compiler. For example, a compiler for a new machine can be built by adding a new code generator without developing the front-end. A compiler for a new language can be built by adding a new front-end without developing the back-end. Basic modules for code optimization and parallelization are available. Evaluation of compiling techniques becomes easy by comparing results based on the same infrastructure.
3. Structure of the COINS compiler
Compiler control
Compiler driver
IR (Intermediate Representation) handler
HIR handler
LIR handler
Symbol handler
Front-end
C language front-end
Fortran front-end
Middle
Basic optimizer
Advanced optimizer
SSA (Static Single Assignment) optimizer
Basic parallelizer
SMP (Symmetric Multi-Processor) parallelizer
SIMD (Single Instruction Multiple Data stream) parallelizer
HIR-to-C source code generator
Back-end
Code generator-generator
Sparc machine code generator
x86 machine code generator
x86_64 machine code generator (64 bit x86)
ARM machine code generator
THUMB machine code generator
MIPS machine code generator
SH-4 machine code generator
PowerPC machine code generator
Alpha machine code generator
MicroBlaze machine code generator
Instruction scheduler
Software pipelining optimizer
LIR-to-C source code generator
All modules are written in Java for ease of extension and increase of reliability.
Acknowledgments
The development of COINS was supported by the Japanese Ministry of Education, Culture, Sports, Science and Technology, under Grant "Special Coordination Fund for Promoting Science and Technology" (2000-2004).It was supported also by the Information-Technology Promotion Agency, Japan on 2005.
The maintenance and improvements of COINS are now going on by the Association of COINS Compiler Infrastructure.
The opening of this Web site has been supported by the University of Electro-Communications and the Tokyo Institute of Technology.