#macro #compiler #define #ir #llvm #infrastructure #cilk

nightly macro defs

为cilk定义架构相关的信息的宏

1个不稳定版本

0.1.0 2020年6月22日

#82 in #ir


用于 cilk

MIT 许可证

17KB
466

Sericum

CircleCI

受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