在Excel中构建CPU是一个非常令人惊叹且富有想法的挑战,听上去是如此的不可能,但是确实被实现了,虽然和真正的CPU还是有很大的差距,但这也已经很疯狂了。
下面咱们一块见证一下这个项目:
1、InkboxSoftware/ExcelCPU项目介绍:

GitHub上目前已有4.1K的Star。
CPU.xlsx文件具有16位CPU、16个通用寄存器、128 KB RAM和128 x128显示器。
该项目主要包括以下几个文件:
CPU.xlsx - 包含CPU的主电子表格
ROM.xlsx - 当读ROM开关打开时,CPU读取所使用的ROM电子表格
InstructionSet.xlsx - 解释CPU的ISA
compileExcelASM16.py - Excel-ASM 16编译器
Excel-ASM16.xml - 与Notepad++兼容的Excel-ASM 16语言的Markdown
Sample Programs - Excel CPU的示例程序文件夹
CPU.xlsx文件示例:
ROM.xlsx文件示例:
项目使用:
大体翻译如下:(非专业)
必须打开迭代计算。这可以通过转到文件->选项->公式->然后启用迭代计算并将最大迭代次数设置为1,
CPU根据B2中设置的时钟信号运行。此时钟信号将在Excel电子表格中重新计算的正常条件下更新。按F9键将重新计算电子表格。
如果F2单元格中的复位按钮设置为真,则会将PC寄存器复位回0。
CPU.xlsx文件中的计算机可以自动或手动模式控制。这由J2中的按钮控制。如果设置为真,当来自B2的时钟信号为高电平时,CPU将执行单元格D8中获取单元的覆盖槽中指定的操作。如果设置为假,CPU将执行PC寄存器指定的从存储器表中检索的操作。
重置RAM按钮,如果设置为真,将重置每个内存单位为0。
Read ROM(读取ROM)按钮如果设置为true,则会将ROM. xlsx电子表格中内存表的值复制到CPU. xlsx电子表格的RAM表中。
CPU的正常操作包括将复位按钮设置为高,或者再次打开和关闭复位RAM或读取ROM按钮(导致RAM被复位或ROM被读取到RAM表中),然后关闭复位按钮。然后CPU被设置为在手动模式下运行程序,或者将执行RAM中指定的程序。
CPU设计为根据InstructionSet.xlsx电子表格中指定的指令集架构运行。
警告:不可能简单地尽可能快地按下F9键,Excel更新这么多单元格需要时间,建议等到Excel左下角可以看到文本“Ready”后再继续按下F9键。
或者,程序可以用Excel-ASM 16语言编写,并编译为ROM.xlsx电子表格。
详细的使用操作可参考GitHub上该项目的README.md文档
具体的代码获取,请后台留言【ExcelCPU】,免费发送!
也可自行登录github网站获取,项目链接如下:
https://github.com/InkboxSoftware/excelCPU