📜  门| GATE CS 2008 |第77章

📅  最后修改于: 2021-06-30 01:23:41             🧑  作者: Mango

延迟分支可以帮助处理控制隐患
以下代码将在管道上运行
具有一个分支延迟插槽的处理器:

I1: ADD R2←R7+R8
I2 : SUB R4← R5-R6
I3 : ADD R1← R2+R3
I4 : STORE Memory [R4]←[R1]
BRANCH to Label if R1== 0

I1,I2,I3或I4中的哪一条指令可以合法占用延迟槽
没有任何其他程序修改?
(A) I1
(B) I2
(C) I3
(D) I4答案: (D)
说明:不能是l1或l3 ,因为它们直接或间接地参与分支决策。
现在我们可以在分支决策语句之后获得l2和l4,并且I2和I4的顺序也很重要,因为在I2中,我们将最终值保存在寄存器R4中,并且在指令中,我们将R1的内容保存在内存中,该内存的地址存储在登记。

因此,如果我们使I2成为分支后的指令,则第一个循环本身中的值本身存储在地址存储在R4中的内存位置中的值将是错误的,因为它实际上应该先由R5-R6更新。因此,I4是正确的。

因此(D)是正确的选择。
这个问题的测验