精彩的部分来了,完成至本章,一台可以运行的图灵完备的cpu就造好了,废话不多说,开搞!
算数引擎
CPU的核心部件之一,算数运算单元ALU就是本关,需要进行加减乘除和按位与或非,每种运算都按其逻辑方式来即可,难度不高但非常重要
寄存器之间
本关也是核心部件之一,寄存器之间,主要是进行寄存器之间的相互赋值的操作,寄存器的作用就是用来存储计算单元ALU的临时值,正因为有寄存器,计算机才有了算数的记忆功能。
本关可以实现控制六个寄存器和输入输出,需要注意PROGRAM里面存储的是程序代码,由一个一个8位的字节组成,可以叫做指令代码,指令代码的最低三位可以控制源操作寄存器,由三位构成的二进制数可以表示8种状态,正好用来设定6个源操作寄存器和输入输出,中间三位同理,控制目的操作,最高两位暂时不用,后续会用到,这样就可完全控制源和目的的寄存器之间的操作了。(注意:随着后续条件判断和指令译码的电路部分加入,此关卡的电路也会随之改动,因此下面展示的其实是完整的图灵完备的电路)。
元件工坊
本关主要是把功能电路做成模块化,以便再后续的应用中实现更复杂的电路。
指令解码器
本关用到了指令代码的最高两位,通过这两位控制我们的cpu进入何种模式,二位二进制数可以表示四种状态,即立即数模式(00),计算模式(01),复制模式(10),条件跳转(11)。
计算单元
往寄存器之间的那关电路加入计算单元,需要动用之间做好的模块。
条件判断
本关比较麻烦,主要是地方太小,需要画的内容多,条件判断是重要的程序转移的电路部分,主要是和0比较得到8种状态结果,需要细细思考。
程序
本关主要是把之前现有的指令输入改成自建的代码输入,主要加入计数器部分,到这里我们就可以得知,程序是通过计数器加1,一步一步运行的,难度不大。
立即数
立即数的主要改动部分是R0寄存器,这样我们可以直接从程序里往R0寄存器写值,这个值叫做立即数,就是可以立即拿来做运算的意思。
图灵完备
恭喜你到达本关,只需要加入条件跳转部分,我们就可以控制程序从任意的位置执行,这样代码和数据就可以相互影响,我们可以自由的改变程序的执行位置从而实现任意的计算,即图灵完备!