Annotation of gforth/README.vmgen, revision 1.8

1.4       anton       1: Vmgen supports the construction of interpretive systems by generating
                      2: the code for executing and dealing with virtual machine (VM)
                      3: instructions from simple descriptions of the VM instructions.
                      4: 
                      5: This file is about Vmgen-specific issues.  Issues affecting both
                      6: Gforth and Vmgen (e.g., platform compatibility) are discussed in
                      7: README.
                      8: 
                      9: Vmgen generates code for executing VM instructions (with optional
                     10: tracing), for generating VM code, for disassembling VM code, and for
                     11: profiling VM instruction sequences.  A VM instruction description
                     12: looks like this:
1.1       anton      13: 
                     14: add  ( i1 i2 -- i )
                     15: i = i1+i2;
                     16: 
                     17: Vmgen supports several techniques for writing efficient interpreters:
                     18: virtual machine interpreters, threaded code, combining VM instructions
                     19: into superinstructions, keeping the top-of-stack in a register,
                     20: scheduling the dispatch of the next VM instruction, and a couple of
1.8     ! anton      21: minor optimizations.  Interpreters created with Vmgen usually are
1.1       anton      22: faster than competing interpreters and are typically only a factor of
                     23: 2-10 slower than the code generateed by native-code compilers.
                     24: 
                     25: Vmgen has special support for stack-based VMs (but it can also be
                     26: used to advantage when implementing a register-based VM).
                     27: 
1.4       anton      28: Changes in Vmgen from earlier releases are explained in NEWS.vmgen.
1.1       anton      29: 
1.4       anton      30: After installation the documentation is available in info form and in
                     31: printable form (doc/vmgen.ps).
                     32: 
                     33: There is a simple usage example in vmgen-ex (and a variation on that
                     34: in vmgen-ex2).  See the documentation for more information on that.
                     35: 
                     36: To report a bug, use
                     37: <https://savannah.gnu.org/bugs/?func=addbug&group_id=2672>.  For
                     38: discussion on Vmgen (e.g., how to use it), use the
                     39: bug-vmgen@mail.freesoftware.fsf.org mailing list (use
                     40: <http://mail.gnu.org/mailman/listinfo/help-vmgen> to subscribe).
1.1       anton      41: 
                     42: You can find vmgen at http://www.complang.tuwien.ac.at/anton/vmgen/.
                     43: 
                     44: Vmgen is currently distributed with Gforth (because it needs Gforth to
                     45: run, and Gforth needs it to build), and is installed together with
1.4       anton      46: Gforth (read INSTALL for instructions).
1.1       anton      47: 
1.4       anton      48: Note that future versions of vmgen may require small changes in
                     49: programs written for the present version (e.g., requiring a few
1.1       anton      50: additional macro definitions).
1.5       anton      51: 
                     52: -----
1.7       anton      53: Copyright (C) 2001, 2002, 2003,2007 Free Software Foundation, Inc.
1.5       anton      54: 
                     55: This file is part of Gforth.
                     56: 
                     57: Gforth is free software; you can redistribute it and/or
                     58: modify it under the terms of the GNU General Public License
1.6       anton      59: as published by the Free Software Foundation, either version 3
1.5       anton      60: of the License, or (at your option) any later version.
                     61: 
                     62: This program is distributed in the hope that it will be useful,
                     63: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     64: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.#See the
                     65: GNU General Public License for more details.
                     66: 
                     67: You should have received a copy of the GNU General Public License
1.6       anton      68: along with this program. If not, see http://www.gnu.org/licenses/.

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