1个不稳定版本
0.1.0 | 2020年6月22日 |
---|
#82 in #ir
用于 cilk
17KB
466 行
Sericum
受LLVM影响的Rust编写的编译器基础设施
不要期望太多功能!
待办事项
- 实现基本块参数
- 在不重建sericum的情况下为多个目标生成代码
- 验证IR
- IR的更多优化
- 支持以值返回结构体
- 编写文档
构建
要求:Rust nightly
cargo test --features x86_64 # build for x86_64
cargo test brainfuxk --features x86_64 --release -- --nocapture # this is fun. just try it.
cargo test --features aarch64 # build for aarch64. a few features are implemented.
cargo test --features riscv64 # currently doesn't work. need help.
示例
cargo test demo --features $ARCH -- --nocapture # $ARCH is x86_64 or aarch64
- 有用的宏可以描述IR
let fibo = sericum_ir!(m; define [i32] f [(i32)] {
entry:
cond = icmp le (%arg.0), (i32 2);
br (%cond) l1, l2;
l1:
ret (i32 1);
l2:
a1 = sub (%arg.0), (i32 1);
r1 = call f [(%a1)];
a2 = sub (%arg.0), (i32 2);
r2 = call f [(%a2)];
r3 = add (%r1), (%r2);
ret (%r3);
});
使用sericum作为后端创建自己的语言
./minilang
和 ./sericumcc
可能会帮到你。
依赖项
~2MB
~45K SLoC