MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  1

Download:
pdf | ps
by Simon Peyton Jones, Thomas Nordin, Dino Oliva
http://research.microsoft.com/Users/simonpj/Papers/pal-ifl.ps.gz
Add To MetaCart

Abstract:

Abstract. Of late it has become very common for research compilers to emit C as their target code, relying on a C compiler to generate machine code. In effect, C is being used as a portable compiler target language. It offers a simple and effective way of avoiding the need to re-implement effective register allocation, instruction selection, and instruction scheduling, and so on, all for a variety of target architectures. The trouble is that C was designed as a programming language not as a compiler target language, and is not very suitable for the latter purpose. The obvious thing to do is to define a language that is designed as a portable target language. This paper describes C--, a portable compiler target language, or assembler. C-- has to strike a balance between being high-level enough to allow the back end a fair crack of the whip, while being low level enough to give the front end the control it needs. It is not clear that a path exists between these two rocks; the ghost of UNCOL lurks ominously in the shadows [6]. Yet the increasing popularity of C as a compiler target language (despite its unsuitability) suggests strong demand, and provides an existence proof that something useful can be done.

Citations

588 Compiling with Continuations – Appel - 1992
483 From System F to typed assembly language – Morrisett, Walker, et al. - 1998
344 The Java Language Environment: A White Paper – Gosling, McGilton - 1996
218 TIL: A type-directed optimizing compiler for ML – Tarditi, Morrisett, et al. - 1996
176 Implementing lazy functional languages on stock hardware: the spineless tagless g-machine – Jones - 1992
129 RABBIT: A compiler for SCHEME – Steele - 1978
123 Stack-based typed assembly language – Morrisett, Crary, et al. - 2000
61 SCHEME->C A Portable Scheme-to-C Compiler – Bartlett - 1989
51 No assembly required: Compiling Standard ML to C – Tarditi, Acharya, et al. - 1990
40 The advantages of machinedependent global optimization – Benitez, Davidson - 1994
33 Omniware: A Universal Substrate for Web Programming – Lucco, Sharp, et al. - 1995
31 Tail recursion without space leaks – Jones - 1992
26 MLRISC: Customizable and reusable code generators – George - 1997
20 Proposal for an UNCOL – Conway - 1958
17 Compiling logic programs to C using GNU C as a portable assembler – Henderson, Conway, et al. - 1995
7 CONS Should not CONS its Arguments – Baker - 1995
6 Clarity MCode: A retargetable intermediate representation for compilation – Lewis, Deutsch, et al. - 1995
6 XIL and YIL: The intermediate languages of TOBEY – O'Brien, O'Brien, et al. - 1995
5 The C-- manual – Reig, Jones - 1998
5 Machine-Independent Support for Garbage Collection, Debugging, Exception Handling, and Concurrency – Jones, Ramsey - 1998
5 Simulating tail calls in C – Pettersson - 1995
4 ANDF: Finally an UNCOL after 30 years – Benitez, Chan, et al. - 1989