2003
DOI: 10.7146/brics.v10i14.21784
|View full text |Cite
|
Sign up to set email alerts
|

From Interpreter to Compiler and Virtual Machine: A Functional Derivation

Abstract: We show how to derive a compiler and a virtual machine from a compositional interpreter. We first illustrate the derivation with two evaluation functions and two normalization functions. We obtain Krivine's machine, Felleisen et al.'s CEK machine, and a generalization of these machines performing strong normalization, which is new. We observe that several existing compilers and virtual machines-e.g., the Categorical Abstract Machine (CAM), Schmidt's VEC machine, and Leroy's Zinc abstract machine-are already in… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

1
19
0

Year Published

2007
2007
2022
2022

Publication Types

Select...
6
2

Relationship

0
8

Authors

Journals

citations
Cited by 30 publications
(20 citation statements)
references
References 38 publications
1
19
0
Order By: Relevance
“…More recently, Ager, Biernacki, Danvy, and Midtgaard have addressed the problem of deriving abstract machines, including Krivine's machine, using continuation passing style transformations applied to evaluators and interpreters of the λ-calculus [3,4]. This is a slightly different approach than the one we have chosen here, because it relates programs (interpreters and abstract machines) that implement the same reduction strategy.…”
Section: Proof Of the Lazy Krivine Machinementioning
confidence: 99%
“…More recently, Ager, Biernacki, Danvy, and Midtgaard have addressed the problem of deriving abstract machines, including Krivine's machine, using continuation passing style transformations applied to evaluators and interpreters of the λ-calculus [3,4]. This is a slightly different approach than the one we have chosen here, because it relates programs (interpreters and abstract machines) that implement the same reduction strategy.…”
Section: Proof Of the Lazy Krivine Machinementioning
confidence: 99%
“…The fundamental difference to our work is best understood by looking at the derivation of abstract machines in Ager et al (2003a), on which their later work (Ager et al, 2003b) is based. We formulated our original calculational approach in sections 2.1 to 2.4 as the combination of three transformations steps that first introduce a stack, then a continuation, and finally defunctionalise.…”
Section: Related Workmentioning
confidence: 99%
“…From Interpreter to Compiler and Virtual Machine: A Functional Derivation (Ager et al, 2003b) Another approach to deriving compilers from semantics has been developed by Ager et al (2003b). In this approach, one begins with a definitional interpreter, from which an abstract machine is derived by first rewriting the semantics in continuationpassing style and then defunctionalising.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation
“…These two transformations are often applied together in sequence, for example to transform high-level denotational semantics for programming languages into low-level implementations such as abstract machines or compilers [12,13,11,1,2].…”
Section: Introductionmentioning
confidence: 99%