加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

我这个人不懂什么CPU,于是我用代码模拟出了一个

发布时间:2019-05-25 15:34:35 所属栏目:移动互联 来源:杜伟、张倩、李泽南编译
导读:芯片的计划到底有多灾?想要答复这个题目最好照旧先本身实践一下。最近,来自 BBC 的一名资深软件工程师 Daniel Harper 行使 Go 说话乐成模仿出了一个 CPU 的全部成果,并把本身的经验写成了博客,引起了人们的热议。这篇文章也汇报我们:完备地相识计较机

在这里,外设行使的是适配模式,充当 CPU 和外部天下之间的硬件接口。这里并不难猜,必定是软件计划模式获取灵感的处所。

我这小我私人不懂什么CPU,于是我用代码模仿出了一个

I/O 适配器是怎样毗连到 GLFW 窗口的

通过疏散存眷点,行使 GLFW 将键盘输入的内容输出到屏幕长短常简朴的进程。究竟上我只是从模仿器中提取了大部门代码并整形了一下,行使 go 通道作为收支呆板的信号。

让它跑起来

我这小我私人不懂什么CPU,于是我用代码模仿出了一个

这大噶?鲱难的一部门,至少也是最贫困的。用云云有限的指令集编写措施集真的很糟糕。行使我编写的粗拙的汇编措施编写措施集更糟糕,由于你怪不得别人。

最大的题目在于同时处理赏罚这 4 个寄存器并跟踪它们,将它们作为姑且存储存储到内存中。在这个进程中,我记得 Gameboy CPU 有一个仓库指针寄存器,这样你就可以推送和弹出状态。不幸的是,这台电脑没有这么奢侈,以是我首要是在定制的基本上对内存里的对象举办移进移出操纵。

我独一花时刻实现的伪指令是 CALL,以辅佐挪用函数。这可以让你运行一个函数,然后在函数被挪用后返回到该点。因为没有仓库,你只能挪用一层的深度。

因为呆板不支持间断,为获取键盘状态等函数,你必需实现糟糕的轮询代码。书中简直提到了实现间断的步调,但那必要写更多代码。

无论怎样,我最终编写出了四个措施,个中大都措施行使一些共享代码来绘制字体、获取键盘输入等。固然与操纵体系尚有必然的间隔,但它确实让我意识到一个简朴的操纵体系也也许提供一些处事。

但这着实并不轻易,文本编写措施最棘手的部门是计较出何时转到新行,或当你按回车键时产生了什么。

  1. <code>main-getInput:</code> 
  2. <code>    CALL ROUTINE-io-pollKeyboard</code><code>    </code> 
  3. <code><code>    </code>CALL ROUTINE-io-drawFontCharacter</code><code>    </code> 
  4. <code><code>    </code>JMP main-getInput</code> 

上述文本编写措施的首要轮回。

我也没有抽出时刻来实现退格键或其他任何修改键。这让我意识到建造文本编辑器必要做几多事变,这项事变也许是何等乏味。

反思

这个项目对我来说很是风趣,也很有收成。在用汇编说话编程的进程中,我根基上放弃了底层的 NAND、AND 和 OR 门。我上升到了上面的抽象层。固然我做的这个 CPU 很简朴,间隔电脑里的 CPU 还很远,但通过这个项目我学到了许多,如:

  • 位元如安在行使总线的全部组件之间移动

  • 一个简朴的 ALU 是怎样事变的

  • 一个简朴的 Fetch-Decode-Execute 轮回是什么样的

  • 没有仓库指针寄存器的呆板+仓库的观念很糟糕

  • 没有间断的呆板很糟糕

  • 汇编措施是什么、怎样事变

  • 外围装备怎样与一个简朴的 CPU 通讯

  • 简朴字体的事变道理和在表现器上表现它们的要领

  • 一个简朴的操纵体系会是什么样子

相干课程

假如你对付芯片的事变道理很是有乐趣,先上一些在线课程也是一个好要领。这一 Udacity 免费课程《高机能计较架构》源自佐治亚理工:

  • https://cn.udacity.com/course/high-performance-computer-architecture--ud007

原文地点:https://djhworld.github.io/post/2019/05/21/i-dont-know-how-cpus-work-so-i-simulated-one-in-code/

【编辑保举】

  1. 还为模仿流量测试发愁吗?!滴滴开源RDebug流量回放器材!
  2. 开拓 7 年,我学到了什么?
  3. 12位中年措施员:代码一敲十年,收入虽高前程摇晃
  4. 26个合用于VMware打点员的强盛器材
  5. GitHub上的开源代码到底受不受美国出口牵制?
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读