BUILD INSTRUCTIONS:
Building has only been tested on linux, using gcc, gmake, flex and bison. To compile
with a different c compiler, see the makefile templates under the makefiles/
directory, and make the appropriate changes to the names of the compilers and
options. Sorry this is not yet automated.
There are also a few code generation scripts written in scheme that use the guile
scheme implementation. The generated files are human readable and small, so they
are included as a part of the source tree to ease building if one doesn't have
a scheme implementation to run the generation scripts. These files contain global
arrays of function pointers that correspond to enum values, so they will be very
difficult to maintain by hand.
Assuming the makefiles in the makefiles/ directory are set up, typing make in the
root directory should recursively build all components in a suitable order.
The final binaries are:
bins/sopfai/bin/sopfai sort of purely functional assembly interpreter
bins/sopfvm/bin/sopfvm sort of purely functional virtual machine
bins/sopfva/bin/sopfva sort of purely functional virtual assembler
There are sample assembly source files in bins/samples. The Makefile
will use sopfai to run the sources interpreted and save the outputs.
Then sopfva is used to compile the assembly sources into compiled
files, which are then run using sopfvm.
RUNNING:
See bins/doc/index.html for an outline of every feature that is currently available.
The standard library still needs expansion, but it is currently supports operations
on integer, tuples, vectors, hash sets, and hash maps. Limited IO is provided by
using the byte_tuple and sub_byte_tuple data types to perform buffered reads and writes.
THINGS LEFT TO DO:
* Threads.
* A secondary file format for dynamic parallel execution.
* More features in the standard library.
* A system for loading functions from shared libraries.
* Linking/merging of multiple byte code files.
* Native code compiler.
LICENSE:
This version of the project is released under the MIT license. See LICENSE.txt