cmcc
compiler reuses code --- both internally (reuse between different
modules) and externally (reuse between versions for different target
machines). The key to reuse are the application frameworks developed
for global data-flow analysis, code generation, instruction
scheduling, and register allocation.
The code produced by cmcc
is as good as the code
produced by the native compilers for the MIPS and SPARC, although
significantly less resources have been spent on cmcc
(overall, about 6 man years by 2.5 persons). cmcc
is
implemented in C++, which allowed for a compact expression of the
frameworks as class hierarchies. The results support the claim that
suitable frameworks facilitate reuse and thereby significantly improve
developer effectiveness.
ali@cs.cmu.edu