#vm #register #register-based

nightly bin+lib jazz

爵士虚拟机

11个版本

0.2.2 2018年11月16日
0.2.1 2018年11月15日
0.1.91 2018年11月14日

159#register

每月 21 次下载
2 crates 中使用

MIT 许可证

50KB
1.5K SLoC

爵士虚拟机

license Docs Status

爵士是一个基于寄存器的虚拟机

虚拟机仍在积极开发中,因此不建议用于您的目的

示例代码

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)

爵士深受 Gravity 语言虚拟机的影响

简单的爵士

用于轻松生成JazzVM代码的库,示例

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:

爵士虚拟机

爵士是一个基于寄存器的虚拟机

爵士仍在积极开发中,因此不建议用于您的目的

示例代码

 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)

爵士深受 Gravity 语言虚拟机的影响

依赖项

~0.6–1MB
~14K SLoC