Go to file
Jie 64f97b98bf
add license
2026-05-21 15:58:57 +08:00
.github/workflows update docs 2026-05-20 21:45:48 +08:00
.vscode r 2025-03-12 22:23:04 +08:00
blog update docs 2026-05-21 15:37:53 +08:00
include add a pass 2026-05-20 21:44:24 +08:00
src add a pass 2026-05-20 21:44:24 +08:00
tests update README, testcases && CMakeLists 2026-05-08 21:31:56 +08:00
.clang-format add pass translate MLIR to llvm dialect, etc. 2026-05-08 20:46:13 +08:00
.gitignore lab3 2024-11-02 00:38:10 +08:00
CMakeLists.txt update README, testcases && CMakeLists 2026-05-08 21:31:56 +08:00
LICENSE add license 2026-05-21 15:58:57 +08:00
README.md update README, testcases && CMakeLists 2026-05-08 21:31:56 +08:00

README.md

Cminusf 编译器原型

这个项目是一个基于 MLIR 的 Cminusf 编译器原型用来学习编译基础和MLIR框架

主要流程

Cminusf 编译器的主要流程如下:

Cminusf 源码
    -> 解析器 / AST
    -> 自定义 Cminusf Dialect MLIR
    -> 标准 MLIR Dialects (func / arith / memref / scf / cf)
    -> LLVM Dialect
    -> LLVM IR
    -> 使用 Clang 生成 x86 可执行文件

构建和运行

# 构建项目
mkdir build && cd build
cmake ..
make -j

# 编译并运行示例程序
./build/cminusfc --emit-exe ./tests/<program_name>.cminus
./tests/<program_name>

Cminusf 源自 USTC 编译器课程实验,本项目复用了该实验的词法分析、语法分析和 AST 部分。

依赖

  • LLVM (commit: 21f4b84c456b471cc52016cf360e14d45f7f2960)

TODO

  • 在多个层级添加优化 Pass