- view: text
- select for diffs
Tue May 1 13:35:41 2001 UTC
(20 years, 5 months ago) by anton
CVS tags: HEAD
vmgen-related changes in Makefile
fixed FORTHB/prims2x breakage
added peeprules.vmg as a place to put superinstructions
testdist now also tests vmgen-ex
1: Vmgen generates much of the code for efficient virtual machine (VM)
2: interpreters from a simple descriptions of the VM instructions. It
3: generates code for executing VM instructions (with optional tracing),
4: for generating VM code, for disassembling VM code, and for profiling
5: VM instruction sequences. A VM instruction description looks like
8: add ( i1 i2 -- i )
9: i = i1+i2;
11: Vmgen supports several techniques for writing efficient interpreters:
12: virtual machine interpreters, threaded code, combining VM instructions
13: into superinstructions, keeping the top-of-stack in a register,
14: scheduling the dispatch of the next VM instruction, and a couple of
15: minor optimizations. Interpreters created with vmgen usually are
16: faster than competing interpreters and are typically only a factor of
17: 2-10 slower than the code generateed by native-code compilers.
19: Vmgen has special support for stack-based VMs (but it can also be
20: used to advantage when implementing a register-based VM).
22: The main shortcoming in the current release is the lack of a user
23: manual; however, there is a paper describing vmgen's operation (at
24: http://www.complang.tuwien.ac.at/anton/vmgen/), and there is a simple,
25: working and somewhat commented example of using vmgen (in directory
28: If you have bugs to report, suggestions to make, questions, or any
29: other feedback, mail me (email@example.com).
31: You can find vmgen at http://www.complang.tuwien.ac.at/anton/vmgen/.
33: Vmgen is currently distributed with Gforth (because it needs Gforth to
34: run, and Gforth needs it to build), and is installed together with
35: Gforth (read INSTALL for instructions).
37: Note that future versions of vmgen will probably require small changes
38: in programs written for the present version (e.g., requiring a few
39: additional macro definitions).