怎么从 trace 找到出错的地方

对着一份 trace 找 bug,办法是【0】。

开始练习 →

一份带前后值的 trace

运行下面这段程序,填写它打印出来的结果。 PROG = [0b00001001, 0b01000111, 0b10000011, 0b11000000] def decode(w): return (w >> 6) &

开始练习 →

自己写:带前后值的 trace

每执行一条指令,记下「执行前 > 执行后」。

开始练习 →

自查:trace 连不连得上

检查一份 trace 是不是连贯的——前一行的后值必须等于后一行的前值。

开始练习 →

找出第一处偏差

把实际 trace 和预期 trace 逐行比,找出第一处不一样的行号(都一样返回 -1)。

开始练习 →

⚠️ 记少了一列就定位不到

同一个 bug,用「只记 R0」和「记 R0 和 R1」两份 trace 各找一次。⚠️ 只记一列的那份看不出任何问题。

开始练习 →

模拟流水线要记什么

要在模拟器里观察流水线,最关键的是记下【0】。

开始练习 →

模拟器里的流水线和真机差在哪

这条路线的流水线模型和真机相比,最大的简化是【0】。

开始练习 →

四条指令,两种走法

运行下面这段程序,填写它打印出来的结果。 STAGES = 5 FLUSH = 3 def pipelined(n): return n + STAGES - 1 def wrong_guesses(pattern):

开始练习 →

第三拍时,三条指令各在哪一级

运行下面这段程序,填写它打印出来的结果。 STAGE_NAMES = ["取指", "译码", "执行", "访存", "写回"] cycl

开始练习 →