很多人有想过开发一个游戏模拟器,也曾尝试编译过一些开源项目,却被庞大的知识体系给吓到而退缩,定的目标过高,便极易半途而废,CHIP8就是这样一个最简单的模拟器,上世纪70年代开发的一种CPU模拟,核心功能性的指令仅有二十几个却能模拟CPU的运行,如果你是个想要开发模拟器的小白,那么这将是最快让你了解其中原理的项目 这是一个更侧重学习的项目,通过本项目可以学习CPU模拟,汇编,debugger,编译原理等方面的知识 基于最新C++20特性开发的CHIP8模拟器,反汇编工具,调试工具,和汇编编译器
模块:
- common是通用的一些函数
- framework主要用于呈现,渲染库用到了IMGUI和SDL2
- cpu,input,display,memory负责chip8的模拟运行
- assembler负责对汇编程序进行编译输出ROM
- disassemble对ROM进行反汇编
- debugger实现了调试器部分,依赖disassemble
安装Visual Studio 2017或者以上版本,已添加对生成事件的处理,会自动配置好依赖,打开即可运行 后面会考虑CMake编译系统的加入,欢迎其他开发者添加跨平台支持
- 无参数直接运行调试程序
- 带一个参数的则直接运行ch8 ROM
- disasm bin.ch8 则对bin.ch8执行反汇编
- asm ball.c8 bin.ch8 则对ball.c8进行编译生成ROM文件bin.ch8
- 添加C风格的程序语言支持,生成汇编代码
- 基于llvm开发前后端代码生成
- 扩展字节码功能,实现一个更复杂的游戏机模拟器,并为其配备一整套底层开发工具链
绘画0-9的数字显示在屏幕上不断刷新
LD V0,#0
LD V1,#0
LD V2,#5
LD V5,#60
LD I,#000
:draw
DRW V0,V1,#5
LD DT,V5
ADD I,V2
ADD V0,#5
SE V0,#32
JP :draw
LD V1,#0
LD V0,#0
LD I,#000
CLS
JP :draw