jazz 0.2.1

Jazz Virtual Machine
Documentation

Jazz Virtual Machine

license Docs Status

Jazz is a register-based virtual machine

VM is still in active develop so it's not recommended to use Jazz for your purposes

Example code:

LoadInt(0,12) // Load 12 into R(0)
LoadInt(1,3)  // Load 3 into R(1)
Add(2,1,0)    // Add value from R(1) to R(0) and store result in R(2)
Ret(2)        // Return value from R(2)

Jazz is heavily inspired by Gravity language VM

Simple Jazz

Library used for easy generating JazzVM code,example:

fn add_op(node: Node,b: &mut FunctionBuilder) {
    visit(node.left,b);
    visit(node.right,b);
    let r3 = b.register_pop();
    let r2 = b.register_pop();
    let r1 = b.register_push_temp();
    b.insert_op(Instruction::Add(r1,r2,r3));
}