# Turing Complete 攻略
# 基础逻辑电路
# 原力觉醒
点一下左上角,设置为关
# NAND
# NOT
用 NAND 搭建 NOT 门
# AND
可以用 NAND 和 NOT 门
# NOR
# OR
# 高电平
始终输出高电平
# 德摩根定律
# 第二刻
在第二时刻(第二列的真值表)输出高电平。
它很像 AND 的真值表,所以 not 下面那个
# XOR
只有一样的值输出 0
和官方解法不一样
# 三路或门 / 与门
用两个接起来
# XNOR
# 算数运算
# 二进制速算
找刚好比它小的那一个开始,往后选不断累加,如果超过了那就是后面的
# 成对的麻烦
有 2 个或以上高电平时候输出高电平
用 XOR 和 AND 表示加法个位和溢出位,只要有溢出就说明输出 1,否则和下面的继续累加
# 奇数个信号
奇数个 1 输出 1
XOR 基础题,XOR 可以保留奇偶信息
# 半加器
sum 是 xor,carray 是 and
# 全加器
CAR 位就是成对的麻烦那个思路
# 信号计数器
简单加法器
有点复制,个位用奇数计数器,最高位用 and 算,中间用至少 2 个的判断器,在加一个 xor,如果 AND 和 OR 同时 1 那么就是 0,否则就是原来的,下面 1 上面 0 的情况不存在.
# 加倍
就是位运算
# 八位非 / 八位或
两个是一样的思路
# 八位加法器
# 负数
负数的二进制:反着点(绝对值 - 1)的二进制
# 相反数
先取反再加 1
# 存储器
# 循环依赖
电路输入依赖它的输出,随便找两个,把输出和输入连在一起就可以了,不要管报错直接核对
# 延迟线
延迟线可以把输入延迟一个时刻输出, 把两个延迟线连在一起就能延迟 2 个时刻
# 奇变偶不变
把上个输出取反后输入
# 1 位取反器
如果反正引脚 = 1 那么反转输入后输出,否则直接输出输入
观察真值表,发现就是异或
# 一位开关
上面的是控制是否导通的,下面是连接线
XOR:如果导通了就相同,没有导通就取反
# 数据取反器
# 总线
第一个选择输入设备,第二个选择输出设备
中间直接连起来,两个选择器分别选择输入和输出
# 优雅存储
如果开了,就存当前的值。如果没开,就把旧的值再存一遍
# 存储一字节
# 一位解码器
看真值表就行
# 三位解码器
二叉树思路,swc 和 AND 是等价的,应该还能简化
# 小盒子
空间比较小。先做个选择器。然后根据选择器连接到寄存器。Read 和 Write 都有个开关
# 计数器
# 处理器架构
# 寄存器之间
解码寄存器编号分别到输入和输出
# 逻辑引擎 / 算术引擎
# 条件判断
# 指令解码器
# 计算单元
# 程序
# 立即数
# 图灵完备
# 编程
# 加 5
# 激光炮
# 注释以 # 开头
# 示例代码:计算 1 + 1
MOV_R1_IN
MOV_R2_IN
add
MOV_R2_R3
add
MOV_R2_R3
add
MOV_R2_R3
add
MOV_R2_R3
add
reg3_to_out
# 密码锁
懒得二分,直接暴力
# 如下定义跳转标签
label my_label
# 如下定义常数
const PI 3
# 此外,我们还推荐你
# 看一看手册的“汇编”页面
1
MOV_R1_R0
ADD
reg3_to_out
MOV_R2_R3
MOV_R3_IN
end
J3G0_R0
my_label
JMP_R0
label end
# 太空入侵者
# 如下定义跳转标签
label my_label
# 如下定义常数
const PI 3
# 此外,我们还推荐你
# 看一看手册的“汇编”页面
5
MOV_OUT_R0
1
MOV_OUT_R0
1
MOV_OUT_R0
1
MOV_OUT_R0
1
MOV_OUT_R0
1
MOV_OUT_R0
3
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
5
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
label wait
3
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
5
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
3
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
5
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
MOV_OUT_R0
wait
JMP_R0
# 时间掩码
MOV_R1_IN
3
MOV_R2_R0
AND
MOV_OUT_R3
# 迷宫
label start
# while up==1 and left==1, turn left
label w1_beg
enter
exec
load_in
MOV_R2_R3
left
exec
enter
exec
load_in
MOV_R1_R3
right
exec
AND
w1_mid
J3G0_R0
w1_end
JMP_R0
label w1_mid
left
exec
w1_beg
JMP_R0
label w1_end
enter
exec
left
exec
go exec
right
exec
# check right
load_in
start
J3G0_R0
# if see=1
# to start
# else
enter
exec
go
exec
right
exec
start
JMP_R0
# Godot 游戏开发
sudo add-apt-repository ppa:alexlarsson/flatpak | |
sudo apt update | |
sudo apt install flatpak | |
flatpak install flathub org.godotengine.Godot |