Machine-independent support for garbage collection, debugging, exception handling, and concurrency (draft)
Simon Jones, Norman F. Ramsey · 1998
For a compiler writer, generating good machine code for a variety of platforms is hard work. One might try to reuse a retargetable code generator from another compiler, but code generators are complex and difficult to use, and they limit one's choice of implementation language. One might try to use C as a portable assembly language, but C limits the compiler writer's flexibility and the performance of the resulting code. The wide use of C, despite these drawbacks, argues for a portable assembly language. C-- is a new language designed expressly as a portable assembly language. C-- eliminates some of the performance problems associated with C, but in its originally-proposed form it does not provide adequate support for garbage collection, exception handling, and debugging. The problem is that neither the highlevel compiler nor the C-- compiler has all of the information needed to support these run-time features. This paper proposes a three-part solution: new language constr...