Pettersson, M. (1990). Generating Efficient Code from Continuation Semantics. Technical Report LiTH-IDA-R-90-05, Department of Computer and Information Science, Linköping University, Sweden. Presented at the 3rd International Workshop on Compiler Compilers, Schwerin, GDR, October 22-26, 1990. Proc. will appear in the LNCS series by Springer Verlag 1991. (bibtex),
Abstract: In this paper we present a method for generating very efficient code from continuation-style denotational semantics. We claim that this form arises naturally in the definition of procedural languages, such as C. Once the language semantics has been simplified using a compile-time versus run-time distinction, we recognize two important properties of the resulting form, single-threading and label-freeness of closures. The first allows a conventional call-by-value execution with a single store. The second property is central to our work, as it allows bindings and closure creation to be replaced by assignments to uniquely named variables, i.e. quadruples. These quadruples are then passed on to a conventional code optimizer and generator. As far as we know, this is the first time a quality code compiler has been generated which does not rely on either beta-reductions or an abstract stack machine.
CS Dept TR Overview