TapeFlow 是一个高性能的图灵机(Turing Machine)模拟器,配套包含一个将类汇编语言编译为图灵机状态转移规则的编译器(Asm2TM)。
本项目的核心目标是探索计算的本质,通过将高级逻辑降级为最原始的图灵机状态转换,并在图灵机上运行复杂的程序(如贪吃蛇游戏)。它展示了如何仅通过简单的状态转移和读写操作来实现寄存器、算术运算、控制流甚至 I/O。
-
TapeFlow (Runtime):
- 高效模拟: 基于 Rust 实现的高性能图灵机运行时。
- 无限纸带: 动态扩展的纸带(Tape)存储。
- 系统调用 (Syscalls): 通过特殊状态拦截机制,赋予图灵机与宿主环境交互的能力(屏幕输出、键盘输入、随机数、渲染等)。
- 双格式支持: 支持易读的 JSON 格式和紧凑高效的二进制 (
.tm) 格式。
-
Asm2TM (Compiler):
- 汇编编译: 将自定义汇编语言(
.asm)编译为成千上万条图灵机规则。 - 智能优化:
- 路径优化: 编译器在编译期追踪读写头位置,最小化移动步数(不再强制每条指令后复位)。
- 状态压缩: 通过通配符规则和共享返回路径,显著减少生成的状态数量。
- 丰富指令集: 支持寄存器操作、算术运算、栈操作(通过间接寻址模拟)、控制流(跳转/分支)及 I/O。
- 汇编编译: 将自定义汇编语言(
- Rust (Cargo)
- Python 3 (用于运行测试脚本)
cargo build --release# 1. 编译汇编代码
cargo run --release -- compile tests/hello.asm tests/hello.tm
# 2. 运行图灵机
cargo run --release -- run tests/hello.tm项目包含一个 Python 测试运行器,用于验证编译器的正确性。
python3 tests/runner.py体验完全运行在图灵机上的贪吃蛇游戏!
# 1. 编译游戏代码 (生成二进制 .tm 文件以加快加载速度)
cargo run --release -- compile tests/snake.asm tests/snake.tm
# 2. 运行游戏 (开启交互模式)
cargo run --release -- run tests/snake.tm --interactive --steps 1000000操作说明: 使用 w/a/s/d 控制方向,q 退出。
详细文档请参考 docs/ 目录:
- 汇编语言指南 (Assembly Guide): 语法、指令集及示例。
- 架构设计 (Architecture): 编译器原理、状态生成逻辑及系统调用实现。
- 使用教程 (Getting Started): 详细的上手指南。
src/tm.rs: 图灵机核心逻辑实现。src/compiler.rs: 汇编编译器及优化逻辑。src/main.rs: 命令行入口及运行时环境。tests/: 汇编程序示例及测试用例。