José F. Morales, Researcher, IMDEA Software Institute
Implementors of abstract machines face complex, and often interacting, decisions regarding, e.g., data representation, instruction design, instruction encoding, or instruction specialization levels. These decisions affect the performance of the emulator and the size of the bytecode programs in ways that are often difficult to foresee. Furthermore, studying different 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.
I will show a systematic approach to the automatic generation of implementations of abstract machines which is aimed at harnessing some of these difficulties, where different parts of the abstract machine definition (e.g., the instruction set or the internal data and bytecode representation) are specified separately and automatically assembled in the code generation process.
Alternative versions of the abstract machine are therefore easier to produce, and variants of their implementation can be created mechanically. This even allows generating implementations tailored to a particular context.