【图灵完备 Turing Complete】游戏经验攻略分享 Part.6 处理器架构2 函数

server/2024/9/25 3:37:07/

新的架构来了,本游戏的最后一个攻略分享,最后汇编部分无非是对于操作码的熟练,硬件没有问题,那么也就无关痛痒了。


汇编实现,两数相或和两数相与非一起相与即可。 

八位异或器,整就完事了。 

有手就行。 

 利用相等相减全零的原理。

从高位到低位去判断,如果高位小于第二个直接输结果,如果不大于,就打开下面一位的检测通路再进行判断。

 这个和上面无符号小于差不多,多判断了一下符号位。

 判断PC的奇偶,加个3-8译码器,判断奇偶,奇数一定是最后一位是1的,所以激活选通输出。

这关的话。就是一个新的架构了,一次读4条机器码,分别是OP s1 s2 addr,addr相当于结果送到哪。这关由于之后关卡也会复用,所以我已经加了很多东西进去了。然后就是控制存储。写入的时候,加一个常数与地址总线上过来的数字进行比较,相等就激活并打开输入输出。

操作码也相当的简洁,共八位,前两位分别控制s1是立即数还是s2是立即数,第三位判断是否选择是进行比较,然后跳转到指定的行数(此时,前面说的第四个addr就会作为下一个地址传入PC的寄存器)。后五位在第三位没有激活的情况下是用于选择计算(包含简单的MOV),第三位激活之后,就进行判断了,例如大于小于。

RAM部分:另外存在一个RAM寻址寄存器,外加了一个自动加一的计数器,这样的话,设置好基地址,就可以自动的一个一个扫描RAM(这个是后面其中某关的要求)。RAM选定读取写入的操作类似于寄存器。

堆栈部分:

寄存器组:(6个,实则可以拓展,包括栈和ram在内的,存储器件个数只要不超过2的八次方的寻址空间)

运算:(条件选择和这个相同,都是判断OP和指定数字是否相同,相同就激活计算结果,送结果总线,蓝色的那条)

除法器的除零特殊处理。

机器外的输入输出(这里把他们都挂载到7号了,和寄存器等内存器件的选择方法一致): 

PC:这里青色即执行比较和JMP指令通过的命令,准备进行跳转,浅蓝色是新传入的地址(如果前面青色线传1,即跳转,那么直接吧addr线,也就是深蓝色线的数字传进PC),如果不是进行比较,而指令中的addr是6,那么直接把之前运算结果传,也就是浅蓝色(结果总线的内容)传入PC作为新的地址。平常情况下不会把那个自动计数器状态设置为置数状态。

另外,此游戏右键特别灵敏,点住就会很快的删除一根导线,就很容易误触缺线,谨慎操作。 


FIN 


http://www.ppmy.cn/server/121631.html

相关文章

解决启动docker desktop报The network name cannot be found的问题

现象 deploying WSL2 distributions ensuring main distro is deployed: checking if main distro is up to date: checking main distro bootstrap version: getting main distro bootstrap version: open \wsl$\docker-desktop\etc\wsl_bootstrap_version: The network name…

Unity 设计模式 之 结构型模式 -【适配器模式】【桥接模式】 【组合模式】

Unity 设计模式 之 结构型模式 -【适配器模式】【桥接模式】 【组合模式】 目录 Unity 设计模式 之 结构型模式 -【适配器模式】【桥接模式】 【组合模式】 一、简单介绍 二、适配器模式 (Adapter Pattern) 1、什么时候使用适配器模式 2、使用适配器模式的好处 3、适配器…

c/c++八股文

c基础 一、指针和引用的区别 定义方式: 指针是通过 * 操作符定义的变量,用于存储另一个变量的地址。例如: int* p &x;引用是通过 & 操作符定义的别名,直接引用另一个变量。例如: int& r x; 内存占用: 指针是一个独立的变量,占用一定的内存空间。引用不是独立的…

Spring IOC容器Bean对象管理-注解方式

目录 1、Bean对象常用注解介绍 2、注解示例说明 1、Bean对象常用注解介绍 Component 通用类组件注解,该类被注解,IOC容器启动时实例化此类对象Controller 注解控制器类Service 注解业务逻辑类Respository 注解和数据库操作的类,如DAO类Reso…

iOS - TestFlight使用

做的项目需要给外部人员演示,但是不方便获取对方设备的UDID,于是采用TestFlight 的方式邀请外部测试人员的方式给对方安装测试App,如果方便获取对方设备的UDID,可以使用蒲公英 1.在Xcode中Archive完成后上传App Store Connect之前…

前端算法学习,包含复杂度、双指针、滑动窗口、二叉树、堆等常见题型和方法,含leetcode例题

前端算法题 学习 复杂度 时间复杂度 代码的运行时间随着数据规模增长的趋势 最好情况的时间复杂度:O(1)最坏情况的时间复杂度平均情况下的时间复杂度均摊复杂度: 空间复杂度 双指针 两个指针同向、背向移动 快慢指针 可以用于判断链表中是否有环 …

什么是CAPTCHA?有什么用途?

一、CAPTCHA 的工作原理 CAPTCHA的核心目的是通过呈现人类可以轻松理解但计算机程序难以解决的任务,来阻止恶意的自动化工具。传统的CAPTCHA通过展示扭曲或模糊的文字、图片或者点击操作等,要求用户完成验证任务。这些任务通常需要视觉、听觉或简单的逻辑…

在Windows系统上安装的 zstd C++ 库

在Windows系统上安装的 zstd C 库 项目地址:安装步骤步骤一步骤二 效果 项目地址: https://github.com/facebook/zstd 经过观察发现,这个项目没有CMakeLists.txt,只有Makefile,但是Makefile在windows系统下没有什么用, 所以说,常规的方式安装不可取了 安装步骤 步骤一 往下…