Annotation of gforth/README.vmgen, revision 1.2

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

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