Skip to content

wzzc-dev/minimoonbit

Repository files navigation

环境

初始化:

moon 0.1.20250801 (edae1ae 2025-08-01)

git submodule update --init --recursive

cd riscv_rt
zig build

cd ./libriscv/emulator
./build.sh

cd ../..
cp ./libriscv/emulator/rvlinux ./

流程

%%{init: {'theme': 'base', 'themeVariables': { 'fontFamily': 'Comic Sans MS', 'primaryColor': '#fffbd5', 'edgeLabelBackground':'#fffbed', 'lineColor': '#582f0e'}}}%%
flowchart LR
  srcCode["Code"]
  lexTokens["Tokens"]
  parserAST["AST"]
  TypedAST["Typed AST"]
  knfIr["KNF IR"]
  closureIr["Closure IR"]
  ssa["SSA"]
  Assembly["Assembly RISC-V/WASM"]
  srcCode -->|"lex"| lexTokens
  lexTokens -->|"parser"| parserAST
  parserAST -->|"typing"| TypedAST
  TypedAST -->|"A-Normalization"| knfIr
  knfIr -->|"Closure Conversion"| closureIr
  TypedAST -->|"SSA Construction"| ssa
  closureIr -->|"emit"| Assembly
  ssa -->|"emit"| Assembly
  closureIr -->|"emit"| javascript
Loading

命令

生成 riscv 汇编并编译运行

./script/single_run.sh contest-2025-data/test_cases/mbt/conv_pool.mbt

测试全部

./script/new_test.sh

闭包 IR

moon run src/bin/main.mbt -- --closure-interpreter <input>
moon run src/bin/main.mbt -- --closure-interpreter contest-2025-data/test_cases/mbt/ack.mbt

SSA

静态单赋值形式(Static Single Assignment, SSA)是一种中间表示形式,其中每个变量只被赋值一次。这种形式简化了数据流分析和优化。

生成 SSA 输出到终端:

moon run src/bin/main.mbt -- --ssa-interpreter contest-2025-data/test_cases/mbt/ack.mbt

生成 RISC-V 汇编代码并保存到 out.s:

moon run -g src/bin/main.mbt -- contest-2025-data/test_cases/mbt/ack.mbt -o out.s

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 11