1 个不稳定版本

0.1.0 2021年8月7日

#1210 in 开发工具

MIT 许可证

4KB

Vermilion

Vermilion 是一个虚拟机、代码生成器和对象文件格式,旨在用于即时编译的编程语言(完全用 Rust 编写)。与 LLVM 和 Cranelift 等代码生成器相比,它允许高效的编译(以不进行代码验证为代价)。

Vermilion 仍处于 alpha 版本,并且不会生成最有效的代码。如果您发现任何错误,请创建一个问题描述如何重现它。谢谢 :)

示例

提供以下伪代码

function main {
block0:
    %0 = int 1
    %1 = int 1

    add_int %0, %1

    return
}

我们可以通过 vermilion-codegen 包实现 Vermilion

use vermilion_jit::codegen::binemit::Binemit;
use vermilion_jit::codegen::ir::{Function, Module};

let module = Module::new();

let main = Function::new();
let block0 = main.create_block();

main.switch_to_block(block0);
{
    let tmp0 = main.iconst_integer(1);
    let tmp1 = main.iconst_integer(1);
    main.integer_add(tmp0, tmp1);
}
main.return_();

// Define main function
module.define_function("main", main);

// Compile
let mut compiler = Binemit::new(module);
let mut artifact = compiler.emit();

// Run
let mut vm = artifact.new_vm();
vm.run_function("main");

依赖关系

~135KB