Code generation from Denotational Semantics

Stephen J Bevan <bevan@cs.man.ac.uk>
Thu, 24 Mar 1994 08:40:02 GMT

          From comp.compilers

Related articles
Code generation from Denotational Semantics ishimoto@jaist-east.ac.jp (1994-03-16)
Re: Code generation from Denotational Semantics James.Power@compapp.dcu.ie (1994-03-23)
Re: Code generation from Denotational Semantics poe@daimi.aau.dk (1994-03-23)
Code generation from Denotational Semantics bevan@cs.man.ac.uk (Stephen J Bevan) (1994-03-24)
Re: Code generation from Denotational Semantics appel@dynastar.princeton.edu (1994-03-26)
Re: Code generation from Denotational Semantics lloyd@bruce.cs.monash.edu.au (1994-04-05)
| List of all articles for this month |

Newsgroups: comp.compilers
From: Stephen J Bevan <bevan@cs.man.ac.uk>
Keywords: denotational semantics, code, bibliography
Organization: Compilers Central
References: 94-03-066
Date: Thu, 24 Mar 1994 08:40:02 GMT

      I am looking for the paper on code generation from denotational semantics.
      Could anyone give me information?


@string{toplas= "ACM Transactions on Programming Languages and Systems"


@inproceedings
{ Wand:popl:1982
, author= "M. Wand"
, title= "Semantics-Directed Machine Architecture"
, crossref= "popl:1982"
, checked= 19940215
, source= "dept. library"
, pages= "234--241"
, sjb= "See~\cite{Wand:toplas:1982} for a longer version of this."
, abstract= "We show how to analyze the denotational semantics for a
programming language to obtain a compier and a suitble target machine
for the language. We do this by rewriting the equations using
suitable combinators. The machine operates by simulating the
reduction sequences for the combinator terms. the reduction sequences
pass through certain standard forms, which become an architecture for
the machine, and the combinators become machine instructions. Despite
the abstract nature of its development, the machine dreatly resembles
a conventional one. The method is illustrated by a simple expression
language with procedures and input-output."
}




@proceedings
{ popl:1982
, title= "Conference Record of the Ninth annual ACM Symposium
on Principles of Programming Languages"
, booktitle= "Conference Record of the Ninth annual ACM Symposium
on Principles of Programming Languages"
, organization= "ACM"
, year= 1982
, publisher= "ACM"
, source= "Dept. library"
, sjb= "The papers were not formally refereed but where
accepted on the basis of extended abstracts."
, month= jan
}




@article
{ Wand:toplas:1982
, author= "Mitchell Wand"
, title= "Deriving Target Code as a Representation of Continuation Semantics"
, journal= toplas
, volume= 4
, number= 3
, pages= "496--517"
, month= jul
, year= 1982
, checked= 19940302
, source= "Dept. Library"
, sjb= "excellent paper"
, keywords= "semantics, code generation, compilers, denotational
semantics, lambda calculus, continuations, combinators"
, abstract= "Reynolds' technique for deriving interpreters is extended
to derive compilers from continuation semantics. The technique starts
by eliminating $\lambda$-variables from the semantic equations through
the introduction of special-purpose combinators. The semantics of a
program phrase may be represented by a term built from these
combinators. Then associative and distributive laws are used to
simplify the terms. Last, a machine is built to interpret the
simplified terms as the functions they represent. The combinators
reappear as the instructions of this machine. The technique is
illustrated with three examples."
}




@inproceedings
{ Clinger:lfp:1984
, author= "William Clinger"
, title= "The Scheme 311 Compiler: An Exercise in Denotational Semantics"
, crossref= "lfp:1984"
, pages= "356--364"
, checked= 19940322
, source= "dept. library"
, sjb= "Gives a continuation semantics for Scheme. Factors the
definition into various combinators (signature). Using this
signature, creates an algebra where the operations are primitives in a
virtual machine. This makes it possible to ``execute'' the
denotational semantics. Sketches various proofs of correctness.
Effectively an application of~\cite{Wand:toplas:1982}."
}




@proceedings
{ lfp:1984
, title= "Conference Record of the 1984 ACM Symposium on Lisp
and Functional Programming"
, booktitle= "Conference Record of the 1984 ACM Symposium on Lisp
and Functional Programming"
, organization= "ACM"
, year= 1984
, month= aug
, publisher= "ACM"
, source= "Dept. library"
, sjb= "The papers were not formally refereed but where
accepted on the basis of extended abstracts."
}




@article
{ Fradet:Metayer:toplas:1991
, author= "Pascal Fradet and Daniel le M{\'e}tayer"
, title= "Compilation of Functional Languages by Program Transformation"
, journal= toplas
, volume= 13
, number= 1
, pages= "21--51"
, month= jan
, year= 1991
, checked= 19940120
, keywords= "functional programming, compililers, optimization,
combinators, continuations, program transformation"
, abstract= "One of the most important issues concerning functional
languages is the efficiency and the correctness of their
implementation. We focus on sequential implementations for
conventional von Neumann computers. The compilation process is
described in terms of program transformations in the functional
framework. The original functional expression is transformed into a
functional term that can be seen as a traditional machine code. the
two main steps are the compilation of the computation rule by the
introduction of continuation fucntions and the compilation of the
environmetn management using combinators. The advantage of this
approach is that we do not have to introduce an abstract machine,
which makes correctness proofs much simpler. As far as efficiency is
concerned, this approach is promising since many optimizations can be
described and formally justified in the functional framework."
}
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.