Description and Optimization of Abstract Machines in a Dialect of Prolog
Jose F. Morales, Manuel Carro, Manuel Hermenegildo

TL;DR
This paper demonstrates how describing Prolog abstract machines in a high-level Prolog dialect and compiling to C can simplify development and optimization, achieving performance comparable to or better than traditional low-level implementations.
Contribution
It introduces a method to describe and optimize Prolog abstract machines using high-level Prolog, facilitating easier maintenance and potential performance improvements.
Findings
High-level Prolog descriptions enable effective optimization.
Generated emulators match or surpass hand-crafted performance.
The approach simplifies development and extension of abstract machines.
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
