指令契约
你以为你写的是指令。你写的是愿望。机器收到的,是四条它才看得懂的命令。
契约之门
筑基殿前的石阶尽头,矗立着一扇巨门。门面密密麻麻刻满了 0 和 1,像某种无法阅读的经文。
门下的裂缝里渗出暗紫色的光,光里有声音——像很多人在低声争论,又像一个声音在笑。
「你从炼气期过来,会画电路、会写 HDL。现在,写一行你想让机器做的事。然后猜猜——它要几步才能做完?」
「写下吧。猜对了,门开。猜错了……我记一笔。」
翻译之赌 · 一行 C 代码要几条指令?
a = b + c;
这条语句,机器要几条指令完成?👆 点击下方选项下注
翻译殿 · 一句抵四令
穿过门缝是一座悬空石殿,殿中央浮着三层透明石板:最上层刻着 C 代码,中层空白,底层空白。
「上层是你写的。中层是汇编——人能读、机器不能。底层是机器码——机器能读、人不能读。把上面一层拖到下面,看看会发生什么。」
三层翻译 · 拖拽代码穿过每一层
a = b + c;x86 对照(CISC · 3 条)
哲学殿 · 两条道路
翻译殿后是一座天平殿。殿中央悬着一架巨秤,左盘刻"CISC",右盘刻"RISC"。
两座玉碑分立两侧:左侧泛着复杂的暗金光纹——x86;右侧泛着干净的天蓝光纹——RISC-V。
特征归位 · 拖卡片到正确的玉碑
编码台 · 定与变
天平殿后是一座编码台。台上并排刻着两种指令模板:左侧 RISC-V 的 32 格定长条,右侧 x86 的可伸缩变长条。
双模板填充 · 定长 vs 变长
RISC-V 定长 32 位
解码器一步定位所有字段——固定位置,无需扫描
x86 变长 1-15 字节
解码器必须逐字节扫描才能确定边界
RV32I · 四十符文
编码台后是一座环形符文殿,殿壁上排列着四十枚发光符文——每一枚是一条 RV32I 基本指令。殿中央浮着 32 个寄存器槽位。
「四十条指令,三十二个寄存器。这就是全部。剩下的,是组合。」
指令分类 · 拖符文到功能槽
RV32I:约 40 条 | x86-64:超过 1500 条 | ARMv8:约 200 条
位域炼狱 · 六种契约
符文殿深处是一座六面体炼狱。六面墙上各刻着一种指令类型的位域模板:R、I、S、B、U、J。
「从左到右填嘛。位嘛,排着队等着你。」
六面体位域编码器
寻址回廊 · 四条暗道
位域炼狱后是一条环形回廊,廊壁上开着四条暗道,各刻一种寻址符文。
「数据在哪?在指令里、在寄存器里、在内存里、还是在代码的某个位置?四条路,四种走法。」
寻址匹配 · 为指令选对暗道
执行场 · 三类符咒
寻址回廊尽头是一座环形执行场。场中央浮着一个迷你 CPU 架构图:PC、指令存储器、寄存器堆、ALU、数据存储器,用光路连接。
「看了这么多,该亲手跑一次了。三类指令,三种操作。拖进去,看它怎么动。」
迷你 CPU 数据通路模拟器
调用之链 · 栈上契约
执行场后是一座栈殿。殿中央浮着一块垂直内存区——栈,从高地址向下生长。殿侧有一台两遍汇编器。
你物品栏里那枚 S5 裂了纹的 B 型指令玉简微微震动。
「调用不是跳转。跳过去之前,你得先记住从哪跳的。跳过去之后,你得给别人留出地方放东西。」
栈帧组装 · 亲手操作函数调用
两遍汇编器
Boss 战 · 语义之渊三问
殿深处的紫色裂隙撕裂开来,语义之渊凝聚成形——一张由无数 0 和 1 构成的面孔,眼眶里淌着编译器的中间代码。
「你走完了翻译链路。但你真的懂了吗?三问。答对,我散。答错,你留下来——当我的翻译器。」
渊账累计 0 笔 · 三问全对后清零
契约之外
深渊消散后,筑基殿归于清明。晨光从殿顶照下来,契约石板上的刻痕在光中微微发亮。
「契约签完了。但 ISA 不是一个死的东西——它会长。看看这三扇门。」