# 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 |