1 个不稳定版本
0.1.0 | 2021年8月7日 |
---|
#1210 in 开发工具
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