9 个版本
使用旧 Rust 2015
0.0.9 | 2015 年 5 月 16 日 |
---|---|
0.0.8 | 2015 年 2 月 16 日 |
0.0.4 | 2015 年 1 月 25 日 |
0.0.2 | 2014 年 12 月 22 日 |
#1140 in 编程语言
每月 23 次下载
用于 jit
21KB
462 行
JIT.rs
注意
由于 LibJIT 已有一年未活跃,似乎不会再有更新。另一方面,LLVM 仍然非常活跃,因此我已经连续几天在编写绑定。很快就会有关于替代品的消息。
什么是 LibJIT?
LibJIT 是 GNU 开发的便携式、轻量级 JIT 库,用 C 语言编写。它旨在具有与任何语言或运行时兼容的 IR,而不强迫程序员使用特定的一个。
什么是 jit.rs?
jit.rs 是一个 Rust 库,以 Rust 风格封装了 LibJIT,包括一个宏,用于将任意类型轻松编译成 JIT 类型。它还使用 Rust 内存模型来保存一些在其他情况下可能会在 GC 语言中使用的无意义操作。
为什么有这么多包?
libjit-sys
- 该包包含 JIT 函数、常量等的绑定。如果您想坚持使用原始 API,则应使用此包。jit
- 该包包含 JIT 函数和结构的 Rust 风格包装。jit_macros
- 该包包含帮助简化与 JIT 交互的宏定义。
如何构建它?
如果您想构建它,您需要为 Ubuntu 或 Debian 安装以下包
sudo apt install autoconf automake texinfo libtool bison flex g++
然后,您可以使用 cargo 来构建它
cargo build
如何使用宏?
只需像这样注释您想传递给 LibJIT 的类型
#[derive(Compile)]
struct Position {
x: f64,
y: f64
}
fn main() {
...
let pos = Position {
x: 5.0,
y: -32.2
};
func.insn_return(func.insn_of(pos))
...
}
有没有示例?
有一个带有良好命令行界面的 Brainfuck 虚拟机示例。您可以从项目根目录使用以下命令运行它
cargo run --example brainfuck
然后,您应该输入 brainfuck 代码并按换行符运行。
> ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Hello, world!
>
您还可以在这里查看其源代码 这里。
依赖关系
~6KB