aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.org31
1 files changed, 28 insertions, 3 deletions
diff --git a/README.org b/README.org
index 71d9437..ae91bdd 100644
--- a/README.org
+++ b/README.org
@@ -2,9 +2,34 @@
#+author: Aryadev Chavali
#+date: 2023-10-15
-A stack based virtual machine in C11. Deals primarily in bytes,
-doesn't make assertions about typing and is very simple to target.
-* Instructions to target
+A stack based virtual machine in C11, with a dynamic register setup
+which acts as variable space. Deals primarily in bytes, doesn't make
+assertions about typing and is very simple to target.
+* How to build
+Requires =GNU make=, a compliant C11 compiler. Code base has been
+tested against =gcc= and =clang=, but given how the project has been
+written without use of GNU'isms it shouldn't be an issue to compile
+using something like =tcc= or another compiler (look at
+[[file:Makefile::CC=gcc][here]] to change the compiler).
+
+To build everything simply run ~make~. This will build:
++ [[file:lib/inst.c][instruction bytecode system]] which allows one to
+ target the VM by writing and reading instruction bytecode
++ [[file:vm/main.c][VM executable]] which can execute bytecode (your
+ =java= executable)
++ [[file:asm/main.c][Assembler executable]] which can assemble
+ compliant assembly code to VM bytecode
++ [[file:examples/][Assembly examples]] which provide some source code
+ examples on common programs one may write. Use this to figure out
+ how to write compliant assembly.
+
+One may also build each component individually through the
+corresponding recipe:
++ ~make lib~
++ ~make vm~
++ ~make asm~
++ ~make examples~
+* Instructions to target the virtual machine
You need to link with the object files for
[[file:lib/base.c][base.c]], [[file:lib/darr.c][darr.c]] and
[[file:lib/inst.c][inst.c]] to be able to properly target the OVM.