A virtual machine implementation written in Go.
The main purpose was learning what is, how does it work and what could be done with a virtual machine by following the Write your Own Virtual Machine tutorial without copy-pasting the entire code, that's the reason why I used another language, Go instead of C.
Both 2048.obj and rogue.obj assembly programs are available.
In project's directory, compile:
go build
Run it, passing an assembly program as argument:
./elsevm 2048.obj
./elsevm rogue.obj
You can also run main file without compiling:
go run main.go 2048.obj
go run main.go rogue.obj
Feel free to test other assemblies.
Originally, termios.h
was used in the tutorial to deal with
input/output communication ports.
I have tried a similar behavior using bufio, a Go's standard library package. But I couldn't fix some bugs, which led me switching to eiannone keyboard library afterwards.