Menu

Tree [583cee] master /
 History

HTTPS access


File Date Author Commit
 assembler 2012-12-08 Yemi Yemi [583cee] added sign test functions
 base 2012-12-08 Yemi Yemi [583cee] added sign test functions
 bins 2012-09-29 Yemi Yemi [3411d1] Added proxy objects.
 execution 2012-09-29 Yemi Yemi [3411d1] Added proxy objects.
 file_format 2012-09-29 Yemi Yemi [3411d1] Added proxy objects.
 instructions 2012-09-29 Yemi Yemi [3411d1] Added proxy objects.
 makefiles 2012-12-08 Yemi Yemi [cbc9a9] improved building with different options just a...
 tests 2012-09-29 Yemi Yemi [3411d1] Added proxy objects.
 utils 2012-11-23 Yemi Yemi [a325ce] added missing return statements
 LICENSE.txt 2012-06-24 Yemi Yemi [d75159] first commit (again)
 Makefile 2012-09-02 Yemi Yemi [1e7e8b] Added byte code compiler and loader
 README.txt 2012-09-02 Yemi Yemi [1e7e8b] Added byte code compiler and loader

Read Me

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
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.