什么是各种类型的分支?
计算机程序中的分支是一条指令,它指示设备开始执行多条指令,而不是简单地按顺序执行指令。在高级语言中,这些被定义为流程控制阶段,并被整合到语言中。在汇编编程中,分支指令被整合到 CPU 中。
分支用于无条件或有条件地控制传输到程序的指定位置。无条件分支总是被执行。相反,条件分支包含一个条件,因此根据特定条件是真还是假,要么被执行,要么不被执行。
如图表所示,它可以显示三种类型的无条件分支 - 简单条件分支、子程序分支和子程序返回。**简单无条件分支**不存储返回地址,而子程序分支则存储。
**子程序返回**是专门的无条件分支,实现对存储的返回地址的控制转移。在嵌套子程序中,在分支到和从单个子程序返回时,返回地址以后进先出 (LIFO) 的方式存储和使用。
一种特殊的条件分支是**循环闭合条件分支**。这些分支是后向分支,除了循环的最后一次迭代之外,其他所有迭代都会执行。特定的架构提供了实现循环闭合分支的方法。例如,一些架构指定了一个计数寄存器,可以用作循环计数器,例如 PowerPC 架构。
DEC Alpha 和 PowerPC 架构中使用的相应分支指令示例。值得一提的是,PowerPC 架构对分支有一个很好的概念,至少在两个方面是这样。首先,该架构在处理器级别没有不同的分支和分支到子程序指令。
所有分支,无论是条件分支还是无条件分支,都可以通过将指令编码中指定的位(称为 LK 位)设置为 1,转换为分支到子程序指令。在这种情况下,返回地址将保存在一个架构定义的寄存器中,称为链接寄存器。
子程序返回指令的实现很简单,它是一种特殊类型的分支,其中目标地址取自链接寄存器。
其次,该架构以统一的方式处理条件分支和无条件分支。无条件分支是条件分支的简单变体,其条件始终满足。但是,这种方法有一个缺点,导致了一些不常见的指令助记符。