【图灵完备(Turing Complete)】四、处理器架构2
文章目录
54/55/56/57:异或 /8位常数 /8位异或 /相等
28+32+4=164,把相应的bit位置1即可。 上图对应的二进制数就是10100100
解锁两个新元件:8位异或,8位同或。
两数相减,结果等于0时,输出高电平1。
左边是个减法器,如果两数相等,必定等于0,拆成8个bit位,按位相或还是0,经过非门变成高电平1,正确。如果两数不等,减法之后必定不是0,拆散之后必定存在1,那么或门输出一定是1,经过非门就输出0,完美过关,又解锁一个新元件:8位判等器。
58/59:无符号小于/有符号小于
将输入数值认为是无符号数,进行两个数之间的比较,第一个数小于第二个数输出高电平1,否则输出0。
高位的权重大于低位。
在AB一正一负时,且A为负时,输出高电平1
60:宽指令
本关卡要求我们在每一个不同的时钟周期执行不同的动作:在偶数时刻,记录下程序模块中的值,在奇数时刻一次性输出两个值
因为计数器是一直累加的,所以用它的最低位来当作时钟信号正好满足需求。所以需要摆出一个分线器,输入端接到计数器的输出,把最低位引出来当作时钟信号线。因为0归于偶数,因此需要给时钟线加一个非门,接到寄存器的写入端口。再将程序模块的输出端接到寄存器的输入端,同时,再通过一个8位开关接到第二个输出元件去。再将时钟线分别连到寄存器的读取端口和8位开关的使能端口
61:一把线,像挂面
从现在起要逐步搭建一个名为LEG的体系架构。
62/63:操作码 /立即数
这里的立即数概念和原始图灵机中的<立即数>完全一致,不过在那时,受限于指令宽度,我们能获取的立即数的最大值也只有十进制63,而到了这里,我们的完整命令可以有4个字节,那么随之而来的好处就是可取数值更宽了。比如在这里,可以用一整个字节来表示立即数,最大值就达到了十进制数255。
64:条件判断II
我们的新架构LEG要采用一种新的条件判断命令,和前面的新ALU一样,它对整条命令的中间两个参数进行比较,这两个参数可以被解释为是地址,或者是立即数,对它们进行比较后得出一个真或假的判断结果,然后根据这个结果来决定是否进行跳转,如果要跳转的话,最后一个参数就是跳转指针,指向程序模块中的某个地址。
这个逻辑和我们搭建的原始图灵机并没有什么不同
注意,在比较命令下,第四个字节作为指针,要把自己写入到计数器
至此,我们已经完成新架构的搭建~