File:  [gforth] / gforth / README.vmgen
Revision 1.3: download - view: text, annotated - select for diffs
Sun Jun 2 17:02:56 2002 UTC (21 years, 10 months ago) by anton
Branches: MAIN
CVS tags: HEAD
vmgen* now works with lcc and "gcc -O3 -ansi --pedantic -U__GNUC__"

    1: Vmgen generates much of the code for efficient virtual machine (VM)
    2: interpreters from 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.
   26: 
   27: There are two versions of the example: in directory vmgen-ex you find
   28: a version using many casts; in directory vmgen-ex2 you find a version
   29: using unions instead of casts.
   30: 
   31: The current release requires GCC both for building and for compiling
   32: the resulting interpreters (threaded code cannot be implemented in
   33: ANSI C).
   34: 
   35: If you have bugs to report, suggestions to make, questions, or any
   36: other feedback, mail me (anton@mips.complang.tuwien.ac.at).
   37: 
   38: You can find vmgen at http://www.complang.tuwien.ac.at/anton/vmgen/.
   39: 
   40: Vmgen is currently distributed with Gforth (because it needs Gforth to
   41: run, and Gforth needs it to build), and is installed together with
   42: Gforth (read INSTALL for instructions).  
   43: 
   44: Note that future versions of vmgen will probably require small changes
   45: in programs written for the present version (e.g., requiring a few
   46: additional macro definitions).

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>