/univm

Primary LanguageC#

UNIVM

Short for Universal Virtual Machine

Runs a custom instruction set.

128-Bit wide per instruction.

0...31 32..127
Operation Data
OpCode Data0,Data1,Data2

Add functionality via SysCall.

Assembly Structure

Part Desc
Header Header information of the assembly
Text Text Section of the assembly
Program Program Section of the assembly

Header

0..3 4..7 8..11
Global Mem Length Text Count Instruction Count

Memory Layout

ID 0: Stack Always preallocated, offset as using size.

Implementations

.NET Implementation

Source codes are under univm.net folder.

Currently .Net version is the most complete implementation. It includes the VM and assembler, they are univm and univmc.

This implementation heavily depends on unsafe and pointers to improve performance and save memory/gc. Almost like writing in C. ;-P

build-bflat.sh build with bflat but only build univm.

C Implementation

Source codes are under univm.c folder.

Currently, C version is not working and no plan of implementing assembler in C.

C version aims on maximizing compatibility. Currently almost only use C99.

Build script are written in ash-compatible shell script.