* Call/ret/push/pop are implemented and appear to be working
* Call/ret/push/pop is specified in the 0x2000 block, replacing the
mov instruction
* Mov instruction is now specified in the 0x3000 block
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
Most everything works, but there's one small bug with the execution
involving jumps - still have to figure that one out.
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
* Disassemble structure can be used for dumping an object section
* Assembler position calculation was messing up, causing jump addresses
to be wrong. This is fixed.
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
* Object layout and parsing are done in the vm::obj module
* Add MemCursor, a wrapper around the std::io::Cursor type for walking
through VM memory
* Add vm::tick module for containing the Vm::tick() method
implementation, since it's pretty big
* Instructions are now variable-sized, and are read lazily,
one-at-a-time directly from memory.
* Add VM runtime error structure
* Probably some other stuff I forgot
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>