Title
No assembly required: compiling standard ML to C
Abstract
C has been used as a portable target language for implementing languages like Standard ML and Scheme. Previous efforts at compiling these languages to C have produced efficient code, but have compromised on portability and proper tail recursion. We show how to compile Standard ML to C wihout making such compromises. The compilation technique is based on converting Standard ML to a continuation-passing style &lgr;-calculus intermediate language and then compiling this language to C. The code generated by this compiler achieves an execution speed that is about a factor of two slower than that generated by a native code compiler. The compiler generates highly portable code, yet still supports advanced features like garbage collection and first-class continuations. We analyze the performance and determine the aspects of the compilation method that lead to the observed slowdown. We also suggest changes to C compilers that would better support such compilation methods.
Year
DOI
Venue
1992
10.1145/151333.151343
LOPLAS
Keywords
Field
DocType
scheme,code generation,garbage collection,continuation passing style,intermediate language
Common Intermediate Language,Dynamic compilation,Programming language,Compile time,Computer science,Parallel computing,Code generation,Compiler,Single Compilation Unit,Tracing just-in-time compilation,Interpreted language
Journal
Volume
Issue
Citations 
1
2
46
PageRank 
References 
Authors
9.31
9
3
Name
Order
Citations
PageRank
David Tarditi15510.09
Peter Lee 00012975147.71
Anurag Acharya3877151.97