Updated README with build instructions
This commit is contained in:
31
README.org
31
README.org
@@ -2,9 +2,34 @@
|
|||||||
#+author: Aryadev Chavali
|
#+author: Aryadev Chavali
|
||||||
#+date: 2023-10-15
|
#+date: 2023-10-15
|
||||||
|
|
||||||
A stack based virtual machine in C11. Deals primarily in bytes,
|
A stack based virtual machine in C11, with a dynamic register setup
|
||||||
doesn't make assertions about typing and is very simple to target.
|
which acts as variable space. Deals primarily in bytes, doesn't make
|
||||||
* Instructions to target
|
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
|
You need to link with the object files for
|
||||||
[[file:lib/base.c][base.c]], [[file:lib/darr.c][darr.c]] and
|
[[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.
|
[[file:lib/inst.c][inst.c]] to be able to properly target the OVM.
|
||||||
|
|||||||
Reference in New Issue
Block a user