我正在构建lncpu:一个自制的8位CPU及其汇编器和类C迷你编译器——欢迎反馈与贡献!
TL;DR:我正在开发一个名为lncpu的8位CPU设计,包含完整工具链(lnasm汇编器和lnc迷你C编译器)。它能够启动简单程序,具有文档化的调用约定/ABI,并希望就架构本身、ISA、编译器以及电路设计方面获得反馈。
项目简介
LNCPU是一个8位数据总线、16位地址总线的自制CPU设计。它最初是作为改进Ben Eater的8位CPU的练习,后来发展成为一个非常庞大的项目。
设计特性
- 4个通用寄存器
- 算术(加、减)和逻辑(与、或、异或、非、位移)运算
- 硬件堆栈支持
- 多种寻址模式:立即寻址、绝对寻址、数据页寻址、堆栈帧偏移寻址、间接寻址
- 16位地址空间,分为ROM(000-1fff)、RAM(2000-3fff)和最多6个可连接设备
- 硬件和软件中断
- 基于进位、零和负标志的条件分支
目前,它以Logisim-evolution中的数字仿真形式存在。计划进入实际电路设计阶段,并使用自制CNC电路板实现。
工具链
在实现设计和测试过程中,我构建了一系列工具,这些工具共同构成了项目的很大一部分:
- 功能完整的汇编器(lnasm),可编译为可加载到CPU EEPROM中的机器代码
- 类C语言编译器lnc,可编译为lnasm然后转为机器代码(进行中)
- ROM烧录工具,具有自定义UI并通过Arduino上运行的加载程序进行接口
- CPU模拟器,用于以物理硬件可能运行的速度测试复杂程序
- 用于语法高亮和符号解析的VSCode扩展
演示与更多
请访问[Github页面]查看仓库。在发布版本中,您将找到所有内容的预构建版本(包括我推荐的Logisim-evolution分支)以及预加载了可运行程序的logisim项目。
还有各种文档文件,描述了我做出的所有功能和设计选择。
我期待听到关于这个项目的反馈和建议。还有很多工作要做,所以如果您喜欢这个项目并希望在任何子项目(电路设计、编译器等)中做出贡献,非常欢迎(我将非常感激:))
Cheers,
Lorenzo