⚠️ 少记一列,错就藏住了
同一段程序,一份 trace 只记写进去的值(不记是哪个寄存器、不记 PC),另一份记「PC-操作码-R0」三段。把一条指令改成写 R1(而不是 R0),看两份 trace 各自还看不看得出来。
和直接跑出来的结果对一遍账
从 trace 的最后一行取出 R0,和直接跑完程序得到的 R0 比一比。
讲清一条指令,要讲哪几样
要把一条指令的执行流程讲清楚,至少要说清【0】。
怎么验收自己写的 CPU
自己写了一个小 CPU,怎样才算验收通过?【0】
每条指令单独验一遍
运行下面这段程序,填写它打印出来的结果。 PROG = [0b00001001, 0b01000111, 0b10000011, 0b11000000] def decode(w): return (w >> 6) &
自己写:完整的一台小 CPU
把取指、译码、执行、写回四步接起来,跑完整个程序,返回「R0 的轨迹 / 停下来时的 PC」。
给它加一条新指令
给这台 CPU 加一条 AND 指令(操作码 3 原本是停机,现在把停机换成操作码 3 之外的写法:用立即数和 R0 做按位与)。⚠️ 停机改成「PC 走到程序末尾自然停」。
逐条验收,一条不落
把每条指令单独喂给 CPU 验一遍,数出对上了几条。起点一律取 R0 = 9。
⚠️ 忘了截成八位
跑一段会算出负数的程序(先装 3,再减 9)。一版老老实实截成八位,一版忘了截。两版的结果都打出来。
收官:写出一条指令的完整说明
把第二条指令的执行过程逐拍讲清楚:每一拍的名字、这一拍谁在动、动完之后关键值是多少。三拍用 | 隔开,三段内部用 - 隔开。