Description and optimization of abstract machines in a dialect of Prolog
From MaRDI portal
Abstract: In order to achieve competitive performance, abstract machines for Prolog and related languages end up being large and intricate, and incorporate sophisticated optimizations, both at the design and at the implementation levels. At the same time, efficiency considerations make it necessary to use low-level languages in their implementation. This makes them laborious to code, optimize, and, especially, maintain and extend. Writing the abstract machine (and ancillary code) in a higher-level language can help tame this inherent complexity. We show how the semantics of most basic components of an efficient virtual machine for Prolog can be described using (a variant of) Prolog. These descriptions are then compiled to C and assembled to build a complete bytecode emulator. Thanks to the high level of the language used and its closeness to Prolog, the abstract machine description can be manipulated using standard Prolog compilation and optimization techniques with relative ease. We also show how, by applying program transformations selectively, we obtain abstract machine implementations whose performance can match and even exceed that of state-of-the-art, highly-tuned, hand-crafted emulators.
Recommendations
- Towards Description and Optimization of Abstract Machines in an Extension of Prolog
- The Vienna abstract machine
- A verified prolog compiler for the Warren Abstract Machine
- Towards a methodology for the design of abstract machines for logic programming languages
- Design and analysis of hardware for high-performance prolog
Cites work
- 1983–1993: The wonder years of sequential Prolog implementation
- A Syntactic Approach to Combining Functional Notation, Lazy Evaluation, and Higher-Order in LP Systems
- An overview of Ciao and its design philosophy
- Compiler construction. 11th international conference, CC 2002, held as part of the joint European conferences on theory and practice of software, ETAPS 2002, Grenoble, France, April 8-12, 2002, Proceedings
- scientific article; zbMATH DE number 1615263 (Why is no real title available?)
- scientific article; zbMATH DE number 1696866 (Why is no real title available?)
- scientific article; zbMATH DE number 1948391 (Why is no real title available?)
- scientific article; zbMATH DE number 1368925 (Why is no real title available?)
- Logic Programming
- Logic-based program synthesis and transformation. 16th international symposium, LOPSTR 2006, Venice, Italy, July 12--14, 2006. Revised selected papers.
- Optimal union-find in Constraint Handling Rules
- Special issue: Selected papers based on the presentation at the 10th inernational static analysis symposium (SAS 2003), San Diego, CA, USA, June 11--13, 2003.
- The execution algorithm of mercury, an efficient purely declarative logic programming language
Cited in
(8)- Compiling Prolog to idiomatic Java
- Towards Description and Optimization of Abstract Machines in an Extension of Prolog
- A simple code improvement scheme for prolog
- Partial translation: towards a portable and efficient prolog implementation technology
- Optimizing abstract abstract machines
- Towards a methodology for the design of abstract machines for logic programming languages
- Logic Programming
- Fifty Years of Prolog and Beyond
This page was built for publication: Description and optimization of abstract machines in a dialect of Prolog
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q4593018)