Next: Using profiling to create superinstructions, Previous: Example, Up: Example [Contents][Index]
There are two versions of the same example for using Vmgen: vmgen-ex and vmgen-ex2 (you can also see Gforth as example, but it uses additional (undocumented) features, and also differs in some other respects). The example implements mini, a tiny Modula-2-like language with a small JavaVM-like virtual machine.
The difference between the examples is that vmgen-ex uses many casts, and vmgen-ex2 tries to avoids most casts and uses unions instead. In the rest of this manual we usually mention just files in vmgen-ex; if you want to use unions, use the equivalent file in vmgen-ex2.
The files provided with each example are:
Makefile README disasm.c wrapper file engine.c wrapper file peephole.c wrapper file profile.c wrapper file mini-inst.vmg simple VM instructions mini-super.vmg superinstructions (empty at first) mini.h common declarations mini.l scanner mini.y front end (parser, VM code generator) support.c main() and other support functions fib.mini example mini program simple.mini example mini program test.mini example mini program (tests everything) test.out test.mini output stat.awk script for aggregating profile information peephole-blacklist list of instructions not allowed in superinstructions seq2rule.awk script for creating superinstructions
For your own interpreter, you would typically copy the following files and change little, if anything:
disasm.c wrapper file engine.c wrapper file peephole.c wrapper file profile.c wrapper file stat.awk script for aggregating profile information seq2rule.awk script for creating superinstructions
You would typically change much in or replace the following files:
Makefile mini-inst.vmg simple VM instructions mini.h common declarations mini.l scanner mini.y front end (parser, VM code generator) support.c main() and other support functions peephole-blacklist list of instructions not allowed in superinstructions
You can build the example by cd
ing into the example’s directory, and
then typing make
; you can check that it works with make
check
. You can run run mini programs like this:
./mini fib.mini
To learn about the options, type ./mini -h
.
Next: Using profiling to create superinstructions, Previous: Example, Up: Example [Contents][Index]