我这个人不懂什么CPU,于是我用代码模拟出了一个
在这里,外设行使的是适配模式,充当 CPU 和外部天下之间的硬件接口。这里并不难猜,必定是软件计划模式获取灵感的处所。 I/O 适配器是怎样毗连到 GLFW 窗口的 通过疏散存眷点,行使 GLFW 将键盘输入的内容输出到屏幕长短常简朴的进程。究竟上我只是从模仿器中提取了大部门代码并整形了一下,行使 go 通道作为收支呆板的信号。 让它跑起来这大噶?鲱难的一部门,至少也是最贫困的。用云云有限的指令集编写措施集真的很糟糕。行使我编写的粗拙的汇编措施编写措施集更糟糕,由于你怪不得别人。 最大的题目在于同时处理赏罚这 4 个寄存器并跟踪它们,将它们作为姑且存储存储到内存中。在这个进程中,我记得 Gameboy CPU 有一个仓库指针寄存器,这样你就可以推送和弹出状态。不幸的是,这台电脑没有这么奢侈,以是我首要是在定制的基本上对内存里的对象举办移进移出操纵。 我独一花时刻实现的伪指令是 CALL,以辅佐挪用函数。这可以让你运行一个函数,然后在函数被挪用后返回到该点。因为没有仓库,你只能挪用一层的深度。 因为呆板不支持间断,为获取键盘状态等函数,你必需实现糟糕的轮询代码。书中简直提到了实现间断的步调,但那必要写更多代码。 无论怎样,我最终编写出了四个措施,个中大都措施行使一些共享代码来绘制字体、获取键盘输入等。固然与操纵体系尚有必然的间隔,但它确实让我意识到一个简朴的操纵体系也也许提供一些处事。 但这着实并不轻易,文本编写措施最棘手的部门是计较出何时转到新行,或当你按回车键时产生了什么。
上述文本编写措施的首要轮回。 我也没有抽出时刻来实现退格键或其他任何修改键。这让我意识到建造文本编辑器必要做几多事变,这项事变也许是何等乏味。 反思这个项目对我来说很是风趣,也很有收成。在用汇编说话编程的进程中,我根基上放弃了底层的 NAND、AND 和 OR 门。我上升到了上面的抽象层。固然我做的这个 CPU 很简朴,间隔电脑里的 CPU 还很远,但通过这个项目我学到了许多,如:
相干课程假如你对付芯片的事变道理很是有乐趣,先上一些在线课程也是一个好要领。这一 Udacity 免费课程《高机能计较架构》源自佐治亚理工:
原文地点:https://djhworld.github.io/post/2019/05/21/i-dont-know-how-cpus-work-so-i-simulated-one-in-code/ 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |