Skip to content

BrainFuckFlow is a high-performance BrainFuck simulator and convert (from asm).

Notifications You must be signed in to change notification settings

King-sj/BrainFuckFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BrainFuckFlow (bf_flow)

BrainFuckFlow 是一个基于 Rust 的 BrainFuck 工具链,包含一个高性能解释器和一个能够将类汇编语言 (ASM) 编译为 BrainFuck 代码的编译器。

功能特性

  • BrainFuck 解释器: 支持标准 BrainFuck 语法,优化了 I/O 处理。
  • 动态内存管理: 解释器支持动态内存扩容(默认最大 1GB),不再受固定内存大小限制。
  • 实时调试服务器: 在运行时提供 HTTP 调试接口,可以实时查看内存状态、程序计数器、正在执行的指令等。
  • ASM 编译器: 支持变量、算术运算、条件跳转等高级特性,自动生成 BrainFuck 代码。
  • 测试套件: 包含完整的集成测试框架,支持 .bf.asm 文件的自动化测试。

快速开始

安装

确保你已经安装了 Rust

git clone https://github.com/your-username/bf_flow.git
cd bf_flow
cargo build --release

使用方法

1. 运行 BrainFuck 代码

# 基础运行
cargo run -- run path/to/script.bf

# 带调试功能(提供源 ASM 文件)
cargo run -- run output.bf source.asm

运行时会自动启动调试服务器在 http://localhost:8000/debug

2. 编译 ASM 代码

# 将 ASM 编译为 BF
cargo run -- compile path/to/source.asm > output.bf

# 运行生成的 BF(自动查找同名 .asm 文件用于调试)
cargo run -- run output.bf

3. 使用调试服务器

运行程序时,调试服务器会在后台启动。在另一个终端中查询状态:

curl http://localhost:8000/debug

返回 JSON 格式的调试信息:

{
  "memory_pointer": 32,
  "bf_pc": 1523,
  "vm_pc": 5,
  "reserved_memory": [0, 0, 0, 5, 1, ...],
  "asm_instruction": "ADD 0, #1"
}

字段说明:

  • memory_pointer: 当前数据指针位置
  • bf_pc: BrainFuck 代码执行位置
  • vm_pc: 虚拟机程序计数器(对应 ASM 指令索引)
  • reserved_memory: 前 256 字节内存快照(包含虚拟机寄存器)
  • asm_instruction: 当前执行的 ASM 指令(如果提供了源文件)

文档

示例

tests/asm/ 目录下可以找到更多示例。

循环打印 A, B, C:

MOV 0, #3   ; 计数器
MOV 1, #65  ; 'A'
LOOP:
    OUT 1
    ADD 1, #1
    SUB 0, #1
    JNZ LOOP
HLT

高级功能

动态内存扩容

解释器默认初始化 30,000 字节内存,但会根据程序需求自动扩容:

  • 当指针移动超出当前内存边界时自动扩容(翻倍策略)
  • 默认最大内存限制:1GB
  • 超过限制时程序会抛出错误

调试 API

调试服务器提供以下端点:

GET /debug

  • 获取当前解释器状态
  • 返回内存快照、寄存器、PC、当前指令等信息
  • 支持 CORS,可从浏览器访问

开发与测试

运行所有集成测试:

cargo test

注意:某些测试(如 squaresfibonacci)由于算法复杂度较高,可能需要较长时间运行。

References

About

BrainFuckFlow is a high-performance BrainFuck simulator and convert (from asm).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published