Skip to content

King-sj/TapeFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TapeFlow & Asm2TM

TapeFlow 是一个高性能的图灵机(Turing Machine)模拟器,配套包含一个将类汇编语言编译为图灵机状态转移规则的编译器(Asm2TM)。

本项目的核心目标是探索计算的本质,通过将高级逻辑降级为最原始的图灵机状态转换,并在图灵机上运行复杂的程序(如贪吃蛇游戏)。它展示了如何仅通过简单的状态转移和读写操作来实现寄存器、算术运算、控制流甚至 I/O。

✨ 核心特性

  1. TapeFlow (Runtime):

    • 高效模拟: 基于 Rust 实现的高性能图灵机运行时。
    • 无限纸带: 动态扩展的纸带(Tape)存储。
    • 系统调用 (Syscalls): 通过特殊状态拦截机制,赋予图灵机与宿主环境交互的能力(屏幕输出、键盘输入、随机数、渲染等)。
    • 双格式支持: 支持易读的 JSON 格式和紧凑高效的二进制 (.tm) 格式。
  2. Asm2TM (Compiler):

    • 汇编编译: 将自定义汇编语言(.asm)编译为成千上万条图灵机规则。
    • 智能优化:
      • 路径优化: 编译器在编译期追踪读写头位置,最小化移动步数(不再强制每条指令后复位)。
      • 状态压缩: 通过通配符规则和共享返回路径,显著减少生成的状态数量。
    • 丰富指令集: 支持寄存器操作、算术运算、栈操作(通过间接寻址模拟)、控制流(跳转/分支)及 I/O。

🚀 快速开始

环境要求

  • Rust (Cargo)
  • Python 3 (用于运行测试脚本)

编译项目

cargo build --release

运行 Hello World

# 1. 编译汇编代码
cargo run --release -- compile tests/hello.asm tests/hello.tm

# 2. 运行图灵机
cargo run --release -- run tests/hello.tm

运行自动化测试

项目包含一个 Python 测试运行器,用于验证编译器的正确性。

python3 tests/runner.py

🎮 运行贪吃蛇 (Snake)

体验完全运行在图灵机上的贪吃蛇游戏!

# 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/ 目录:

目录结构

  • src/tm.rs: 图灵机核心逻辑实现。
  • src/compiler.rs: 汇编编译器及优化逻辑。
  • src/main.rs: 命令行入口及运行时环境。
  • tests/: 汇编程序示例及测试用例。

About

TapeFlow is a high-performance Turing Machine simulator.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors