gpt4 book ai didi

optimization - 取消的分支与常规分支有何不同?

转载 作者:行者123 更新时间:2023-12-03 16:25:04 26 4
gpt4 key购买 nike

特别是对于 SPARC Assembly,被取消的分支与常规分支有何不同?

我一直认为当我需要为分支指令填充 nop 延迟槽时,需要取消分支指令。但是,我认为我在这方面是不正确的,因为您可以在不取消分支的情况下填充 nop。

最佳答案

如果不采用分支,则取消的分支指令会导致延迟槽中的指令——分支之后的指令——被忽略。

为什么这很重要?因为通常情况下,分支后的指令会被执行,即使分支被执行。这是因为有两个程序计数器,PC 和 NPC。 PC,表示正在执行的指令,更新为NPC,即PC+4,同时NPC更新为分支指令的目标。因此,由于这些事件的时间安排,必须加载下一条指令。如果可以的话,与其直接扔掉那个循环,不如使用那个循环更有利可图。然后我们将该指令作为循环的一部分。

loop:   someOp                
someOtherOp
branch loop ;
delayslotOp ; will actually be executed, before someOp, after branch

如果我们不能在分支之后使用指令槽,那么我们在那里插入一个 nop,并且在那个循环中什么都不做。

那么为什么有不同的指令和取消和未取消的分支选项呢?让我们选择退出循环时发生的事情。如果我们将延迟槽作为循环事件的一部分,我们可能不希望在离开循环时执行该操作。因此,我们将在分支指令的末尾添加“,a”。

This page has some nice examples.

关于optimization - 取消的分支与常规分支有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604119/

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