Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
Staging transformations for abstract machines
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Compilers and staging transformations
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Partial Evaluation of Computation Process—AnApproach to a Compiler-Compiler
Higher-Order and Symbolic Computation
Multiple Specialization of WAM Code
PADL '99 Proceedings of the First International Workshop on Practical Aspects of Declarative Languages
Optimising Bytecode Emulation for Prolog
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Program Specialization via Program Slicing
Selected Papers from the Internaltional Seminar on Partial Evaluation
So Many WAM Variations, So Little Time
CL '00 Proceedings of the First International Conference on Computational Logic
Instruction merging and specialization in the SICStus Prolog virtual machine
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Abstract specialization and its applications
Proceedings of the 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Can Logic Programming Execute as Fast as Imperative Programming?
Can Logic Programming Execute as Fast as Imperative Programming?
On the implementation of gnu prolog
Theory and Practice of Logic Programming - Prolog Systems
Comparing tag scheme variations using an abstract machine generator
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Towards description and optimization of abstract machines in an extension of prolog
LOPSTR'06 Proceedings of the 16th international conference on Logic-based program synthesis and transformation
The language features and architecture of b-prolog
Theory and Practice of Logic Programming - Prolog Systems
Prolog performance on larger datasets
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
The implementation of abstract machines involves complex decisions regarding, e.g., data representation, opcodes, or instruction specialization levels, all of which affect the final performance of the emulator and the size of the bytecode programs in ways that are often difficult to foresee. Besides, studying alternatives by implementing abstract machine variants is a time-consuming and error-prone task because of the level of complexity and optimization of competitive implementations, which makes them generally difficult to understand, maintain, and modify. This also makes it hard to generate specific implementations for particular purposes. To ameliorate those problems, we propose a systematic approach to the automatic generation of implementations of abstract machines. Different parts of their definition (e.g., the instruction set or the internal data and bytecode representation) are kept separate and automatically assembled in the generation process. Alternative versions of the abstract machine are therefore easier to produce, and variants of their implementation can be created mechanically, with specific characteristics for a particular application if necessary. We illustrate the practicality of the approach by reporting on an implementation of a generator of production-quality WAMs which are specialized for executing a particular fixed (set of) program(s). The experimental results show that the approach is effective in reducing emulator size.