分支 (计算机科学)

编辑
本词条由“匿名用户” 建档。

分支是计算机程序中的一条指令,它可以使计算机开始执行不同的指令序列,从而偏离其按顺序执行指令的默认行为。分支也可以指作为执行分支指令的结果而将执行切换到不同的指令序列的行为。分支指令用于在程序循环和条件语句中实现控制流(即,仅当满足某些条件时才执行特定的指令序列)。 分支指令可以是无条件分支,它总是导致分支,也可以是条件分支,它可能会或可能不会导致分支,具体取决于某些条件。此外,根据它如何指定新指...

分支(计算机科学)

编辑

分支是计算机程序中的一条指令,它可以使计算机开始执行不同的指令序列,从而偏离其按顺序执行指令的默认行为。 分支也可以指作为执行分支指令的结果而将执行切换到不同的指令序列的行为。 分支指令用于在程序循环和条件语句中实现控制流(即,仅当满足某些条件时才执行特定的指令序列)。

分支指令可以是无条件分支,它总是导致分支,也可以是条件分支,它可能会或可能不会导致分支,具体取决于某些条件。 此外,根据它如何指定新指令序列的地址(目标地址),分支指令通常分为直接、间接或相对,这意味着该指令包含目标地址,或者指定目标地址在哪里 要找到的(例如,寄存器或内存位置),或者它指定当前地址和目标地址之间的差异。

实施

编辑

分支指令可以改变 CPU 的程序计数器(或 PC)(或 Intel 微处理器上的指令指针)的内容。 PC维护下一条要获取和执行的机器指令的内存地址。 因此,一个分支如果被执行,会导致 CPU 从一个新的内存地址开始执行代码,根据程序员计划的算法改变程序逻辑

一种机器级分支是跳转指令。 这些可能会或可能不会导致 PC 被加载或修改为一些新的、不同的值,而不是它通常的值(递增超过当前指令以指向下一条指令)。 跳转通常有无条件和有条件的形式,其中后者可能被采用或不被采用(修改或不修改 PC)取决于某些条件。

第二种机器级分支是用于实现子程序的调用指令。 与跳转指令一样,调用可能会或可能不会根据条件代码修改 PC,但是,另外一个返回地址保存在内存中的安全位置(通常在称为堆栈的内存驻留数据结构中)。 子程序完成后,该返回地址将恢复到 PC,因此程序将继续执行 call 指令之后的指令。

第三种机器级分支是返回指令。 这会从堆栈中弹出一个返回地址并将其加载到 PC 寄存器中,从而将控制权返回给调用例程。 返回指令也可以有条件地执行。 此描述适用于普通实践; 然而,机器程序员有相当大的权力来操纵堆栈上的返回地址,因此可以用许多不同的方式重定向程序的执行。

根据处理器的不同,跳转和调用指令可能会以不同的方式改变 PC 寄存器的内容。 可以加载xxx地址,或者 PC 的当前内容可以在其当前值中添加或减去某个值(或位移),从而使目标地址相对于程序中的当前位置。 位移值的来源可能不同,例如指令中嵌入的立即值,或者处理器寄存器或内存位置的内容,或者添加到索引值的某个位置的内容。

当指代高级编程语言中的程序时,也可以使用术语分支。 在这些分支中通常采用各种形式的条件语句的形式,封装了条件满足时将要执行的指令序列。 GOTO 等无条件分支指令用于无条件跳转到不同的指令序列。 如果算法需要条件分支,则 GOTO(或 GOSUB 子程序调用)之前有一个 IF-THEN 语句指定条件。

分支 (计算机科学)

所有高级语言都支持可以将代码重用为循环的算法,循环是一种重复指令序列的控制结构,直到满足导致循环终止的某些条件为止。 循环也有资格作为分支指令。 在机器级别,循环被实现为将执行重定向到重复代码的普通条件跳转。

在带有标志寄存器的 CPU 中,较早的指令会在标志寄存器中设置条件。 较早的指令可以是算术指令或逻辑指令。 它通常靠近分支,但不一定是分支之前的指令。 然后将存储的条件用于分支,例如如果设置了溢出标志则跳转。 此临时信息通常存储在标志寄存器中,但也可能位于其他位置。 标志寄存器设计在较慢、简单的计算机中很简单。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196054/

(1)
词条目录
  1. 分支(计算机科学)
  2. 实施

轻触这里

关闭目录

目录