PC
当您移动一次太多次时,您的解决方案并不完全有效,这意味着您正在加载目标指针作为源 2 指针(在步骤 5 中,您不应再次增加 PC)。我没有注意到您的解决方案中有任何其他错误,但是我能够找到一个更快的错误:
[更新:显然处理器中有一个 IR;所以我们假设 IR 可以从 DR 加载]
获取操作码
步骤1:AR <- PC
第2步:DR <- M[AR]; PC++; AR++
第 3 步:IR <- DR; DR <- M[AR]
第4步:Decode(IR)
获取 SRC1
第 5 步:AR <- DR; PC++
第 6 步:DR <- M[AR]; AR <- PC
获取 SRC2 (SRC1 到AC
)
第 7 步:AC <- DR; DR <- M[AR]; PC++
第 8 步:AR <- DR
第 9 步:DR <- M[AR]; AR <- PC
添加并获取 DEST
第 10 步:AC <- AC + DR; DR <- M[AR]
将答案放在 DEST 中(如果我们想继续下一条指令,单独的答案)
第 11 步:AR <- DR; DR <- AC
PC++
第 12 步:M[AR] <- DR
AR <- PC
[更新2:因为似乎随机要求需要 15 个周期;这是一个 15 周期的解决方案...请注意,12 周期是理想的,您应该与您的助教/教授讨论]
获取操作码
步骤1:AR <- PC
第2步:DR <- M[AR]; PC++; AR++
第 3 步:IR <- DR
第4步:DR <- M[AR]
第 5 步:Decode(IR)
获取 SRC1
第 6 步:AR <- DR; PC++
第 7 步:DR <- M[AR]
第 8 步:AR <- PC
获取 SRC2 (SRC1 到AC
)
第 9 步:AC <- DR
第 10 步:DR <- M[AR]; PC++
第 11 步:AR <- DR
第 12 步:DR <- M[AR]; AR <- PC
添加并获取 DEST
第十三步:AC <- AC + DR; DR <- M[AR]
将答案放在 DEST 中(如果我们想继续下一条指令,单独的答案)
第 14 步:AR <- DR; DR <- AC
PC++
第 15 步:M[AR] <- DR
AR <- PC