自制8位CPU与完整工具链开发全记录

作者详细介绍了lncpu项目——一个自制的8位CPU设计,包含完整工具链(lnasm汇编器和lnc迷你C编译器)。项目具备硬件堆栈支持、多种寻址模式和中断功能,目前已在Logisim中进行数字仿真,计划通过自制CNC电路板实现物理构建。

我正在构建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

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计