diff --git a/README.md b/README.md index 27d8b42..7232252 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # uVM - Micro Virtual Machine -uVM is simply an experiment ins developing a working virtual machine with it's own bytecode. +uVM is simply an experiment in developing a working virtual machine with it's own bytecode. ## Requirements @@ -13,6 +13,21 @@ uVM is simply an experiment ins developing a working virtual machine with it's o 2. `cmake .` 3. `make` +## Usage + +`uvm [-v] [-h] -f .uc` + +* `-v`: Enable verbose logging mode +* `-h`: Show usage +* `-f .uc`: Load the uvm bytecode file for processing + +## Testing + +CMake tests are used to confirm a handful of sample programs will run successfully in the VM + +1. `cmake .` +2. `make test` + ## Architecture uVM is a _stack machine_. That is, it gets all of it's arguments from the stack, and returns the result @@ -41,3 +56,12 @@ uVM possesses the standard issue instruction set you might expect in a simple VM As I learn more about VM development this instruction set will likely become much more robust. + +## TODO + +- [] Tests for good paths for all instructions +- [] Tests for uncompilable code +- [] Logging out current stack position, etc when verbose mode is enabled +- [] If verbose mode isn't enabled it shows the ascii loading while processing +- [] Come up with a way to allow the user to echo to the screen +- [] It would be cool to eventually write a high level language compiler that compiles down to the uvm