Skip to content

3aKHP/BFCompiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BFCompiler

License C++ Platform CMake

强大的 Brainfuck 语言工具链项目,提供一站式的 BF 程序解释、转译和编译功能。

本工具链包含强大的优化前端多后端目标支持,不仅可以将 Brainfuck 直接解释执行,也可以将其翻译成 C 语言代码,甚至可以直接编译为 x86-64 汇编代码或独立的 Windows PE 可执行文件。

🌟 核心特性

本项目分为三个核心子项目模块:

工具 功能说明
bf-interpreter 解释器:直接在虚拟机中解释执行 .bf 源码程序。
bf-transpiler 转译器:将 BF 源码转译为等价的优化后的 C 语言源码。
bf-compiler 编译器:将 BF 源码编译生成 x86-64 汇编代码 (支持 NASM/MASM/AT&T) 或直接生成独立的 Windows PE 可执行文件 (.exe)。

🚀 先进的前端优化

编译前端内置了 IR (中间表示) 生成器和优化器,可自动执行以下优化策略,大幅提升执行效率:

  • 连续指令合并:将多个相同的简单指令折叠。例如 >>> 优化为 MovePtr(3)+++ 优化为 AddVal(3)
  • 清零循环识别:将常见的清零习语 [-] / [+] 直接映射为单一的 SetZero 操作指令。
  • 死代码消除:分析并移除程序开头(数据指针为0且指向内存为0时)绝对不可达的循环。

📂 项目结构

BFCompiler/
├── common/          # 共享前端架构(词法分析器、解析器、中间代码IR、优化器)
├── interpreter/     # BF 解释器模块
├── transpiler/      # BF -> C 转译器模块
├── compiler/        # BF -> ASM / PE 可执行文件 编译器模块
├── docs/            # 详细的设计与架构文档
└── tests/           # 测试使用的 Brainfuck 程序示例

🛠️ 构建指南

项目使用 CMake 作为主要的构建系统,同时为了兼容性也保留了 Makefile。推荐使用 CMake。

环境要求

  • C++17 兼容的编译器 (如 MinGW-w64 GCC / Clang / MSVC)
  • CMake 3.16 及以上版本

使用 CMake 构建(推荐)

在 Windows (MinGW) 环境下:

# 1. 配置 CMake 生成 Makefile
cmake -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release

# 2. 编译项目
cmake --build build

使用 Makefile 构建

mingw32-make all

构建完成后,所有的可执行工具文件 (bf-interpreter.exe, bf-transpiler.exe, bf-compiler.exe) 将位于 build/cmake-build/ 目录下。

💡 使用说明

解释执行 (Interpreter)

直接运行你的 Brainfuck 脚本:

bf-interpreter hello.bf

转译为 C 语言 (Transpiler)

将 BF 脚本转换为 C 源码:

bf-transpiler hello.bf              # 默认输出为 hello.c
bf-transpiler hello.bf -o out.c     # 手动指定输出文件名称

编译为可执行文件 (Compiler)

1. 直接生成 Windows PE 可执行文件 (.exe):

内部自带轻量级 PE 生成器,不依赖任何外部汇编器或链接器!

bf-compiler hello.bf                # 默认输出为 hello.exe
bf-compiler hello.bf -o myapp.exe

2. 仅生成汇编源码:

供学习研究或与其他项目链接:

bf-compiler hello.bf --asm                    # 默认使用 NASM 格式
bf-compiler hello.bf --asm --format=nasm      # 生成 NASM 格式汇编
bf-compiler hello.bf --asm --format=masm      # 生成 MASM 格式汇编
bf-compiler hello.bf --asm --format=att       # 生成 AT&T/GAS 格式汇编

📝 创作者信息


📄 许可证 (License)

本项目采用 MIT License 开源协议。

About

A powerful Brainfuck language toolchain written in C++17, including an interpreter, a transpiler to C, and a compiler to x86-64 ASM/PE executables.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors