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 Tarditi | 1 | 55 | 10.09 |
Peter Lee 0001 | 2 | 975 | 147.71 |
Anurag Acharya | 3 | 877 | 151.97 |