version 1.3, 2002/06/02 17:02:56
|
version 1.4, 2002/08/22 20:07:33
|
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 19 faster than competing interpreters and a
|
Line 25 faster than competing interpreters and a
|
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. |
|
|
|
There are two versions of the example: in directory vmgen-ex you find |
|
a version using many casts; in directory vmgen-ex2 you find a version |
|
using unions instead of casts. |
|
|
|
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). |