#vm #register #register-based

nightly bin+lib jazz

Jazz Virtual Machine

11 releases

0.2.2 Nov 16, 2018
0.2.1 Nov 15, 2018
0.1.91 Nov 14, 2018

#159 in #register

21 downloads per month
Used in 2 crates

MIT license

50KB
1.5K SLoC

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));
}



lib.rs:

Jazz Virtual Machine

Jazz is a register-based virtual machine

Jazz 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 13 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

Dependencies

~0.6–1MB
~14K SLoC