来自 J. Clark Scott 的《但它怎么知道?》中的 Scott CPU
在阅读 J. Clark Scott 的《但它怎么知道?》时,我被迫写下一些代码,模拟书中描述的计算机。从 NAND 门开始,逐步通过寄存器、RAM、ALU、控制单元以及添加 I/O 支持,最终我创建了一台完全功能的机器。 系统的所有组件都基于逻辑门,以及它们如何通过系统总线相连。 关于这个项目的详细介绍,请参阅我的博客文章 https://djharper.dev/post/2019/05/21/i-dont-know-how-cpus-work-so-i-simulated-one-in-code/
~0.006mhz - 至少在我自己的机器上是这样的
中断,因此你必须编写糟糕的轮询代码 - 书中简要描述了如何扩展系统以支持中断,但这将涉及更多的布线 - 堆栈指针寄存器 + 堆栈 + 堆栈操作指令,因此嵌套的CALL指令将不起作用,并且寄存器可能处于不一致的状态 - 硬盘驱动器 - 减法指令 - MOV指令 - 浮点数运算 (lol) - 现代 CPU 中的其他一切
没有 Meltdown/SPECTRE 风险 - 可以轻松覆盖内存的任何部分,而不受任何保护模式的影响 - 目前无法访问互联网 - 我可以理解你如何编写一个简单的网络 I/O 适配器,尽管我想这会很繁琐,需要编写汇编代码才能将字节读入和写出
| 指令 | 类型 | 描述 | 示例 |
|---|---|---|---|
LOAD Ra, Rb |
机器 | 将内存地址 Ra 的值加载到寄存器 B 中 | LOAD R1, R2 |
STORE Ra, Rb |
机器 | 将寄存器 B 的值存储到内存地址 Ra 中 | STORE R3, R1 |
DATA Ra, <VALUE> |
机器 | 将 <VALUE> 加载到寄存器 A 中。<VALUE> 可以是一个符号,前缀为 |
暂无开放 Issues,或尚未同步最近议题。