e8vm

package module
v0.0.0-...-a3a0001 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 2, 2016 License: Apache-2.0 Imports: 0 Imported by: 0

README

BuildStatus

go get -u e8vm.io/e8vm/...

E8VM

Emul8ed Virtual Machine (E8VM) is a self-contained system that has its own instruction set -- arch8, its own assembly language and assembler -- asm8, its own system language -- g8, and its own project building system -- build8. Using g8 and build8, we can build a small operating system os8.

The project is written entirely in Go language. Plus, each file in the project has no more than 300 lines, with each line no more than 80 characters. Among these small files, there are no circular dependencies, and as a result, the project architecture can be automatically visualized from static code analysis.

Check the visualization of the architecture.

The main project in this repository depends on nothing other than the Go standard library. Hence, it is not a compiler project that based on LLVM.

For Go language documentation on the package APIs, I recommend GoWalker. I find it slightly better than godoc.org.

To Use make

The project comes with a makefile, which formats the code files, check lints, check circular dependencies and build tags. Running the makefile requires installing some tools.

go get -u e8vm.io/tools/...
go get -u github.com/golang/lint/golint
go get -u github.com/jstemmer/gotags

The project developers own the copyright; my employer (Google) does not own the copyright. Apache is the License.

Documentation

Overview

Package e8vm builds a virtual machine world that aims to provide better code readability.

Directories

Path Synopsis
Package arch8 emulates the E8VM's instruction set.
Package arch8 emulates the E8VM's instruction set.
Package asm8 prvoides an assembly language compiler for E8VM.
Package asm8 prvoides an assembly language compiler for E8VM.
ast
Package ast declares the types for the abstract syntax tree in E8VM's assembly language.
Package ast declares the types for the abstract syntax tree in E8VM's assembly language.
parse
Package parse parses an assembly program into an AST.
Package parse parses an assembly program into an AST.
cmd
e8
g8
gfmt
gfmt is the code formatter of G language.
gfmt is the code formatter of G language.
Package dagvis visualizes a DAG graph into a structured, layered planer map.
Package dagvis visualizes a DAG graph into a structured, layered planer map.
Package e8 defines the file format that saves an executable file.
Package e8 defines the file format that saves an executable file.
g8
ast
ir
tast
Package tast saves data structures for typed AST.
Package tast saves data structures for typed AST.
Package toposort topologically sorts a set of nodes based on their dependencies.
Package toposort topologically sorts a set of nodes based on their dependencies.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL