version 1.2, 2001/05/04 07:41:01
|
version 1.9, 2008/12/31 15:29:13
|
Line 1
|
Line 1
|
Vmgen generates much of the code for efficient virtual machine (VM) |
Vmgen supports the construction of interpretive systems by generating |
interpreters from 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; |
Line 12 Vmgen supports several techniques for wr
|
Line 18 Vmgen supports several techniques for wr
|
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). |
|
|
|
The current release requires GCC both for building and for compiling |
|
the resulting interpreters (threaded code cannot be implemented in |
|
ANSI C). |
|
|
|
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/. |
|
|
Vmgen is currently distributed with Gforth (because it needs Gforth to |
Vmgen is currently distributed with Gforth (because it needs Gforth to |
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,2008 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/. |