Annotation of gforth/README.vmgen, revision 1.1
1.1 ! anton 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
! 6: this:
! 7:
! 8: add ( i1 i2 -- i )
! 9: i = i1+i2;
! 10:
! 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.
! 18:
! 19: Vmgen has special support for stack-based VMs (but it can also be
! 20: used to advantage when implementing a register-based VM).
! 21:
! 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
! 26: vmgen-ex).
! 27:
! 28: If you have bugs to report, suggestions to make, questions, or any
! 29: other feedback, mail me (anton@mips.complang.tuwien.ac.at).
! 30:
! 31: You can find vmgen at http://www.complang.tuwien.ac.at/anton/vmgen/.
! 32:
! 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).
! 36:
! 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).
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>