1 个不稳定版本
使用旧的 Rust 2015
0.0.1 | 2014年12月8日 |
---|
#4 in #solely
19KB
526 代码行数(不包括注释)
LeJIT
一个简单的 Rust 编写的 JIT 库。任何帮助都十分欢迎。
依赖项
- Rust (从 Git)
构建说明
make
许可证
版权 (C) 2014 由 Arcterus。保留所有权利。
根据 MPL v2.0 许可。有关更多信息,请参阅 LICENSE.txt。
lib.rs
:
一个(希望)简单的 JIT 库。
示例
#![feature(macro_rules, globs, phase)]
#[phase(plugin, link)]
extern crate lejit;
extern crate libc;
use lejit::*;
use lejit::JitOp::*;
use lejit::JitReg::*;
fn main() {
let mut jit = Jit::new();
jit.build_function("add_four".to_string(), |func| {
func.op(Movrr(R1, R2))
.op(Addri(R1, 4))
.op(Call("sub_four"))
.end();
});
jit.build_function("sub_four".to_string(), |func| {
func.op(Movrr(R1, R2))
.op(Subri(R1, 4))
.op(Call("random_stuff"))
.end();
});
jit.build_function("random_stuff".to_string(), |func| {
let op = func.op(Subri(R1, 7))
.op(Addri(R1, 1000000000));
let op2 = op.op(Subri(R1, 500000000))
.op(Movri(R1, 1))
.op(Movri(R1, 10000));
op2.op(Movri(R1, 1000000000000))
.end();
});
let add = jit_compilefn!(jit, (int) -> int);
println!("add(4): {}", add(4));
}