该项目实现了一个完整的类汇编语言执行系统,包括:
- 脚本语言设计(汇编风格)
- 抽象语法树(AST)构建
- 字节码编译器
- 字节码虚拟机执行器
- 控制结构/函数/数组支持
- 调试与可视化工具
最终形成一个图灵完备、模块清晰、可拓展的编程语言核心运行时系统。
MOV, ADD, SUB, MUL, DIV, MOD, NEG
EQ, GT, LT, AND, OR, NOT
AND_BIT, OR_BIT, XOR, NOT_BIT, SHL, SHR, SAR
JMP, JZ, LABEL
IF, ELSE, ENDIF
WHILE, ENDWHILE, BREAK
ARR_INIT, ARR_SET, ARR_GET, LEN
FUNC, CALL, RETURN, PARAM, ARG, RESULT, ENDFUNC
PRINT, HALT
文件名 | 作用 |
---|---|
parser.py | 将类汇编脚本解析为 AST |
ast_nodes.py | 定义 AST 节点类(含控制流、函数、数组、位运算等) |
executor.py | 解释执行 AST |
bytecode.py | 定义字节码指令集与 Instruction 结构 |
compiler.py | 将 AST 编译为字节码列表 |
bytecode_vm.py | 解释执行字节码指令,支持 debug 跟踪 |
bytecode_io.py | .bcode 文件读写工具,支持反汇编 |
ast_visualizer.py | 使用 Graphviz 可视化 AST 结构 |
test_*.py | 单元测试和 end-to-end 测试脚本 |
- ASTNode 及其子类(如 AddNode, IfNode, CallNode, …)
- Instruction(opcode, args):字节码结构
- Opcode(Enum):虚拟机支持的操作码集合
- ASTCompiler:AST → 字节码编译器
- BytecodeVM:虚拟机解释器
- BytecodeWriter, BytecodeReader:持久化字节码
- ASTVisualizer:AST 可视化工具
- Context, ExecutionContext:VM 状态管理容器
- 词法/语法解析(Parser)
- 抽象语法树(AST)
- 中间代码表示(Bytecode)
- 栈/寄存器虚拟机设计
- 语法糖转换(结构化控制语句)
- 条件语句与跳转控制
- 函数调用、参数传递、返回值管理
- 标签定位与跳转表构建
- 模拟寄存器行为
- 支持栈帧与调用栈
- 位操作、移位运算与补码处理
- 多模块 Python 架构
- 可扩展的指令系统(OPCODE)
- 单元测试、可视化、调试接口
已实现亮点:
- 类汇编 → AST → Bytecode → 虚拟机执行的完整流水线
- 支持结构控制语法(如 WHILE 和 IF)
- 支持数组结构与函数递归
- AST 与字节码可视化/调试
- 支持字节码保存和反汇编
可扩展方向:
- 支持浮点类型(f32, f64)
- 栈式虚拟机 / LLVM IR 输出
- 语法高亮编辑器或 REPL
- 图形化调试器(字节码逐步执行)
- WebAssembly 或 JIT 编译后端