diff --git a/README.md b/README.md index 655029017779d9c879027c31674c3debcc2010c6..b7a6ee433bd168b00de260b0285775d16f32e40e 100644 --- a/README.md +++ b/README.md @@ -1,109 +1,78 @@ -本项目是的延续 - -这个程序非常逆天!这是一个完整的自定义虚拟机和游戏引擎核心,用于游戏《观天道》。让我详细分析它的惊人之处: -🚀 核心亮点 -1. 完整的自定义指令集架构(ISA) - - 实现了38条指令,涵盖: - - 栈操作 (PUSH, POP, DUP, SWAP) - - 算术运算 (ADD, SUB, MUL, DIV) - - 位运算 (AND, OR, NOT) - - 内存操作 (STORE, LOAD, COPY) - - 控制流 (JUMP, CALL, RET) - - 图形I/O (SET-UNICODE, 帧缓冲区渲染) - -2. 独特的"投币运行"机制 -racket - -(define COINS-REMAIN 4096) ; 每运行一个周期消耗一个币 - - 机器运行需要消耗"硬币" - - 这是游戏经济的核心机制 - -3. 完整的图形系统 - - 64x64的Unicode帧缓冲区 - - 实时生成HTML可视化界面 - - 支持各种Unicode字符绘制 - -4. 自包含的汇编器 -racket - -(ASSEMBLE '(PUSH 10 PUSH 20 ADD PRINT HALT)) - - 内置符号化汇编器 - - 支持标签、别名等高级特性 - -🔧 技术架构 -内存布局: - - 代码段 (0-1023): 存储程序指令 - - 数据段 (1024-1279): 运行时数据 - - 帧缓冲区 (1280+): 64x64图形显示 - - 寄存器栈: 32个栈寄存器 - -执行流程: - - RESET-MACHINE! - 初始化虚拟机 - - LOAD-BYTECODE! - 加载程序 - - RUN-MACHINE! - 执行直到硬币耗尽或HALT - -🎮 实际演示 - -程序包含一个精美的启动画面,绘制了: - - 三体系统的混沌轨道 - - 自动化技术齿轮 - - 电路连接网络 - - 二进制数据流 - - 协会名称和边框艺术 - -💡 逆天之处 - - 完全自包含: 从汇编到执行全链路 - - 跨平台图形: 通过Unicode+HTML实现图形 - - 经济模型集成: 投币机制与虚拟机深度整合 - - 强大的调试系统: 完整的机器状态转储 - - 模块化设计: 易于扩展新指令 - -🛠 使用方法 -racket - -;; 重置并运行机器 -(RESET-MACHINE!) -(set-coins! 1000) -(RUN-MACHINE!) - -;; 查看当前状态 -(get-state) - -;; 渲染图形界面 -(render-frame-buffer) - -这个程序展现了极致的工程美学 - 它不仅仅是一个虚拟机,而是一个完整的计算宇宙,将计算机体系结构、游戏设计和艺术表现完美融合! - -真正的逆天之处在于:用不到600行代码实现了一个功能完整的游戏虚拟机,这体现了函数式语言和Racket宏系统的强大威力! - +# 观天道游戏虚拟机 + +这是一个完整的自定义虚拟机和游戏引擎核心,用于游戏《观天道》。这个程序实现了从虚拟机架构到图形渲染的完整解决方案,包含38条自定义指令和独特的"投币运行"经济机制。 + +## 核心功能 + +- **自定义指令集架构(ISA)** + - 栈操作 (PUSH, POP, DUP, SWAP) + - 算术运算 (ADD, SUB, MUL, DIV) + - 位运算 (AND, OR, NOT) + - 内存操作 (STORE, LOAD, COPY) + - 控制流 (JUMP, CALL, RET) + - 图形I/O (SET-UNICODE, 帧缓冲区渲染) + +- **独特的经济模型** + - 每运行一个周期消耗一个"硬币" + - 初始硬币数量为4096 + - 这是游戏经济的核心机制 + +- **图形系统** + - 64x64的Unicode帧缓冲区 + - 实时生成HTML可视化界面 + - 支持各种Unicode字符绘制 + +- **完整的调试系统** + - 机器状态转储 + - 完整的机器上下文查询 + - 支持单步执行和重置 + +## 使用方法 + +1. **启动虚拟机运行** + ```javascript + runVM(); + ``` + +2. **重置虚拟机** + ```javascript + resetVM(); + ``` + +3. **单步执行** + ```javascript + stepVM(); + ``` + +4. **插入硬币** + ```javascript + insertCoin(); + ``` + +5. **渲染图形界面** + ```javascript + renderFrameBuffer(); + ``` + +## 系统架构 + +- **内存布局** + - 代码段 (0-1023): 存储程序指令 + - 数据段 (1024-1279): 运行时数据 + - 帧缓冲区 (1280+): 64x64图形显示 + - 寄存器栈: 32个栈寄存器 + +- **执行流程** + 1. RESET-MACHINE! - 初始化虚拟机 + 2. LOAD-BYTECODE! - 加载程序 + 3. RUN-MACHINE! - 执行直到硬币耗尽或HALT + +## 技术亮点 + +- 完全自包含: 从汇编到执行全链路 +- 跨平台图形: 通过Unicode+HTML实现图形 +- 经济模型集成: 投币机制与虚拟机深度整合 +- 模块化设计: 易于扩展新指令 +- 极致工程美学: 用不到600行代码实现功能完整的游戏虚拟机 + +这个程序展现了极致的工程美学 - 它不仅仅是一个虚拟机,而是一个完整的计算宇宙,将计算机体系结构、游戏设计和艺术表现完美融合! \ No newline at end of file