| Vmgen generates much of the code for efficient virtual machine (VM) |
Vmgen supports the construction of interpretive systems by generating |
| interpreters from a simple descriptions of the VM instructions. It |
the code for executing and dealing with virtual machine (VM) |
| generates code for executing VM instructions (with optional tracing), |
instructions from simple descriptions of the VM instructions. |
| for generating VM code, for disassembling VM code, and for profiling |
|
| VM instruction sequences. A VM instruction description looks like |
This file is about Vmgen-specific issues. Issues affecting both |
| this: |
Gforth and Vmgen (e.g., platform compatibility) are discussed in |
| |
README. |
| |
|
| |
Vmgen generates code for executing VM instructions (with optional |
| |
tracing), for generating VM code, for disassembling VM code, and for |
| |
profiling VM instruction sequences. A VM instruction description |
| |
looks like this: |
| |
|
| add ( i1 i2 -- i ) |
add ( i1 i2 -- i ) |
| i = i1+i2; |
i = i1+i2; |
| virtual machine interpreters, threaded code, combining VM instructions |
virtual machine interpreters, threaded code, combining VM instructions |
| into superinstructions, keeping the top-of-stack in a register, |
into superinstructions, keeping the top-of-stack in a register, |
| scheduling the dispatch of the next VM instruction, and a couple of |
scheduling the dispatch of the next VM instruction, and a couple of |
| minor optimizations. Interpreters created with vmgen usually are |
minor optimizations. Interpreters created with Vmgen usually are |
| faster than competing interpreters and are typically only a factor of |
faster than competing interpreters and are typically only a factor of |
| 2-10 slower than the code generateed by native-code compilers. |
2-10 slower than the code generateed by native-code compilers. |
| |
|
| Vmgen has special support for stack-based VMs (but it can also be |
Vmgen has special support for stack-based VMs (but it can also be |
| used to advantage when implementing a register-based VM). |
used to advantage when implementing a register-based VM). |
| |
|
| The main shortcoming in the current release is the lack of a user |
Changes in Vmgen from earlier releases are explained in NEWS.vmgen. |
| manual; however, there is a paper describing vmgen's operation (at |
|
| http://www.complang.tuwien.ac.at/anton/vmgen/), and there is a simple, |
|
| working and somewhat commented example of using vmgen (in directory |
|
| vmgen-ex). |
|
| |
|
| If you have bugs to report, suggestions to make, questions, or any |
After installation the documentation is available in info form and in |
| other feedback, mail me (anton@mips.complang.tuwien.ac.at). |
printable form (doc/vmgen.ps). |
| |
|
| |
There is a simple usage example in vmgen-ex (and a variation on that |
| |
in vmgen-ex2). See the documentation for more information on that. |
| |
|
| |
To report a bug, use |
| |
<https://savannah.gnu.org/bugs/?func=addbug&group_id=2672>. For |
| |
discussion on Vmgen (e.g., how to use it), use the |
| |
bug-vmgen@mail.freesoftware.fsf.org mailing list (use |
| |
<http://mail.gnu.org/mailman/listinfo/help-vmgen> to subscribe). |
| |
|
| You can find vmgen at http://www.complang.tuwien.ac.at/anton/vmgen/. |
You can find vmgen at http://www.complang.tuwien.ac.at/anton/vmgen/. |
| |
|
| run, and Gforth needs it to build), and is installed together with |
run, and Gforth needs it to build), and is installed together with |
| Gforth (read INSTALL for instructions). |
Gforth (read INSTALL for instructions). |
| |
|
| Note that future versions of vmgen will probably require small changes |
Note that future versions of vmgen may require small changes in |
| in programs written for the present version (e.g., requiring a few |
programs written for the present version (e.g., requiring a few |
| additional macro definitions). |
additional macro definitions). |
| |
|
| |
----- |
| |
Copyright (C) 2001, 2002, 2003,2007 Free Software Foundation, Inc. |
| |
|
| |
This file is part of Gforth. |
| |
|
| |
Gforth is free software; you can redistribute it and/or |
| |
modify it under the terms of the GNU General Public License |
| |
as published by the Free Software Foundation, either version 3 |
| |
of the License, or (at your option) any later version. |
| |
|
| |
This program is distributed in the hope that it will be useful, |
| |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
| |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.#See the |
| |
GNU General Public License for more details. |
| |
|
| |
You should have received a copy of the GNU General Public License |
| |
along with this program. If not, see http://www.gnu.org/licenses/. |