Spill code minimization techniques for optimizing compliers
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Coloring heuristics for register allocation
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
The priority-based coloring approach to register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Object-oriented software engineering
Object-oriented software engineering
Register allocation via hierarchical graph coloring
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
Object-oriented modeling and design
Object-oriented modeling and design
The evolution of an object-oriented compiler framework
Software—Practice & Experience
Ellie: a general, fine-grained, first-class, object-based language
Journal of Object-Oriented Programming
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Register allocation via graph coloring
Register allocation via graph coloring
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Register allocation over the program dependence graph
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Optimal code motion: theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Clarity MCode: a retargetable intermediate representation for compilation
IR '95 Papers from the 1995 ACM SIGPLAN workshop on Intermediate representations
A framework for network protocol software
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Software pipelining showdown: optimal vs. heuristic methods in a production compiler
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Source-level debugging of scalar optimized code
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Global optimization by suppression of partial redundancies
Communications of the ACM
A Retargetable C Compiler: Design and Implementation
A Retargetable C Compiler: Design and Implementation
Software Engineering Aspects in Language Implementation
Proceedings of the 2nd CCHSC Workshop on Compiler Compilers and High Speed Compilation
Register allocation & spilling via graph coloring
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
A portable machine-independent global optimizer--design and measurements
A portable machine-independent global optimizer--design and measurements
Call-cost directed register allocation
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Fusion-based register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Framework for Temporal Data Models: Exploiting Object-Oriented Technology
TOOLS '97 Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems
OpenJIT 2: the design and implementation of application framework for JIT compilers
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Optimal interprocedural program optimization: a new framework and its application
Optimal interprocedural program optimization: a new framework and its application
A framework for end-to-end verification and evaluation of register allocators
SAS'07 Proceedings of the 14th international conference on Static Analysis
Hi-index | 0.00 |
This paper describes how the 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.