在 MIPS 中使用 $0 作为目的地的目的是什么

问题描述 投票:0回答:2

我在研究转发时检测危险的条件时,发现这句话很混乱。

'如果管道中的指令的值为 $0 目的地(例如,

sll $0, $1, 2
),我们希望避免转发 它可能是非零结果值。'

我以为寄存器$0不能被写入不同的值,所以它的值总是0。那么

sll $0, $1, 2
有什么用,将$1中的值左移2并存储在$0中,$0不能改变?那么 $0 作为目的地怎么可能与转发的需要相关呢?

mips cpu-architecture
2个回答
2
投票

“需要转发”似乎说明你不懂转发。这是一个优化。没有“需要”这样做。

优化不应影响语义。将值存储到

$0
并随后读取
$0
的值应根据通常的语义返回 0,而不是之前存储的值。然而转发会转发存储的值。 现在问题来了,为什么

$0

可以作为店铺位置呢?这就是具有正交指令集的 RISC 逻辑。在非 MIPS 架构上,这更有用,因为这些丢弃值操作仍然可以设置标志。

    


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.