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
IR (Intermediate Representation) handler
C language front-end
SSA (Static Single Assignment) optimizer
SMP (Symmetric Multi-Processor) parallelizer
SIMD (Single Instruction Multiple Data stream) parallelizer
HIR-to-C source code 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
Software pipelining optimizer
LIR-to-C source code generator
All modules are written in Java for ease of extension and increase of reliability.
Download sites and alternate site of COINS
You can also access
alternate sites of COINS
AcknowledgmentsThe 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.
Scores of persons have been making efforts to develop, maintain and support the COINS. Many of them are volunteers.
The opening of this web site was supported by the University of Electro-Communications and the Tokyo Institute of Technology. Currently, this web site is supported by the sourceforge.net and the osdn.jp.