gpt4 book ai didi

assembly - 分支指令与数据相关吗?

转载 作者:行者123 更新时间:2023-12-02 19:59:31 24 4
gpt4 key购买 nike

我有一个函数的指令序列,后面跟着两条指令

Loop: .
.
.
.
SUB R20, R4, Rx
BNZ R20, Loop

BNZ、branch 不为零数据是否依赖于 SUB 指令?还是反依赖?

最佳答案

理论上,分支指令与修改分支将检查的寄存器的较早指令(本例中为 SUB)之间存在数据依赖性跳转,但在许多现代架构上,由于分支预测,这种依赖关系不会传播到以下指令,这与其他数据依赖关系不同。

相反,我们说以下指令在跳转上具有控制依赖性,并且这种控制依赖性的行为与数据依赖性非常不同。

也就是说,在具有预测的架构上,数据依赖性不太可能真正导致分支在 SUB 之后生效 - 通常它会生效(即,跳转与否)在SUB执行之前,并且只有当SUB的结果可用时才会检查猜测,以及自分支以来的所有推测执行如果猜测不正确,将回滚。

因此,在某种程度上,当涉及到对其条件和目标的数据依赖性时,跳跃存在于灰色区域。从最严格的意义上来说,它们是依赖的,但是当预测起作用时(通常是这样),它们的行为就不会那样。这有点像 xor r1, r1, r1 或 foo32bits >> 32 存在的灰色区域:根据严格的定义,这些指令依赖于它们的输入,但在这些指令中特殊情况下,答案总是相同的 (0),并且某些 CPU 可能会识别这一点并且不应用通常的依赖规则。

关于assembly - 分支指令与数据相关吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40116948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com