In a virtual machine interpreter, the code for each virtual machine instruction has similarities to code for other instructions. We present an interpreter generator that takes simple virtual machine instruction descriptions as input and generates C code for processing the instructions in several ways: execution, virtual machine code generation, disassembly, tracing, and profiling. The generator is designed to support efficient interpreters: it supports threaded code, caching the top-of-stack item in a register, combining simple instructions into superinstructions, and other optimizations. We have used the generator to create interpreters for Forth and Java. The resulting interpreters are faster than other interpreters for the same languages and they are typically 2-10 times slower than code produced by native-code compilers. We also present results for the effects of the individual optimizations supported by the generator.
%0 Journal Article
%1 VMGen
%A Ertl, M. Anton
%A Gregg, David
%A Krall, Andreas
%A Paysan, Bernd
%C New York, NY, USA
%D 2002
%I John Wiley & Sons, Inc.
%J Softw. Pract. Exper.
%K Efficency Interpreter PhD Proposal VM
%N 3
%P 265--294
%R http://dx.doi.org/10.1002/spe.434
%T Vmgen: a generator of efficient virtual machine interpreters
%U http://portal.acm.org/citation.cfm?id=776235.776238&jmp=citedby&coll=GUIDE&dl=portal,ACM
%V 32
%X In a virtual machine interpreter, the code for each virtual machine instruction has similarities to code for other instructions. We present an interpreter generator that takes simple virtual machine instruction descriptions as input and generates C code for processing the instructions in several ways: execution, virtual machine code generation, disassembly, tracing, and profiling. The generator is designed to support efficient interpreters: it supports threaded code, caching the top-of-stack item in a register, combining simple instructions into superinstructions, and other optimizations. We have used the generator to create interpreters for Forth and Java. The resulting interpreters are faster than other interpreters for the same languages and they are typically 2-10 times slower than code produced by native-code compilers. We also present results for the effects of the individual optimizations supported by the generator.
@article{VMGen,
abstract = {In a virtual machine interpreter, the code for each virtual machine instruction has similarities to code for other instructions. We present an interpreter generator that takes simple virtual machine instruction descriptions as input and generates C code for processing the instructions in several ways: execution, virtual machine code generation, disassembly, tracing, and profiling. The generator is designed to support efficient interpreters: it supports threaded code, caching the top-of-stack item in a register, combining simple instructions into superinstructions, and other optimizations. We have used the generator to create interpreters for Forth and Java. The resulting interpreters are faster than other interpreters for the same languages and they are typically 2-10 times slower than code produced by native-code compilers. We also present results for the effects of the individual optimizations supported by the generator.},
added-at = {2008-08-17T12:14:53.000+0200},
address = {New York, NY, USA},
author = {Ertl, M. Anton and Gregg, David and Krall, Andreas and Paysan, Bernd},
biburl = {https://www.bibsonomy.org/bibtex/2b2a92332cb8cb414207ffe21a4198cc8/gron},
description = {Vmgen},
doi = {http://dx.doi.org/10.1002/spe.434},
interhash = {886c6ce8b93847e2f16635eb8bbc3834},
intrahash = {b2a92332cb8cb414207ffe21a4198cc8},
issn = {0038-0644},
journal = {Softw. Pract. Exper.},
keywords = {Efficency Interpreter PhD Proposal VM},
number = 3,
pages = {265--294},
publisher = {John Wiley \& Sons, Inc.},
timestamp = {2008-08-17T12:14:53.000+0200},
title = {Vmgen: a generator of efficient virtual machine interpreters},
url = {http://portal.acm.org/citation.cfm?id=776235.776238&jmp=citedby&coll=GUIDE&dl=portal,ACM},
volume = 32,
year = 2002
}