在MIPS中将$ 0用作目标的目的是什么

时间:2018-11-14 08:53:43

标签: mips cpu-architecture

我在研究转发时检测危险的条件时,发现这句话很令人困惑。

  

'如果管线中的指令以$ 0作为其指令   目的地(例如sll $0, $1, 2),我们要避免转发   其结果值可能非零。'

我认为寄存器$ 0不能用其他值写入,因此它的值始终为0。然后sll $0, $1, 2的用途是,将$ 1中的值左移2并将其存储在$ 0中,这不能被改变?那么$ 0作为目的地又如何可能与转发需求相关?

1 个答案:

答案 0 :(得分:2)

“需要转发”似乎表明您不了解转发。这是一个优化。不需要“做”。

优化不应影响语义。根据通常的语义,将值存储到$0并随后读取$0的值应返回0,而不是先前存储的值。但是转发将转发存储的值。

现在有一个问题,为什么$0可以用作商店位置。那只是具有正交指令集的RISC逻辑。在非MIPS架构上,这会更有用,因为这些丢弃值操作仍可以设置标志。