| 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; |
| 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/. |
| |
|
| 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). |