• 分支 (計算機科學)

    編輯
    本詞條由“匿名用戶” 建檔。

    分支(計算機科學)

    編輯

    分支是計算機程序中的一條指令,它可以使計算機開始執行不同的指令序列,從而偏離其按順序執行指令的默認行為。 分支(或branching、branched)也可以指作為執行分支指令的結果而將執行切換到不同的指令序列的行為。 分支指令用于在程序循環和條件語句中實現控制流(即,僅當滿足某些條件時才執行特定的指令序列)。

    分支指令可以是無條件分支,它總是導致分支,也可以是條件分支,它可能會或可能不會導致分支,具體取決于某些條件。 此外,根據它如何指定新指令序列的地址(目標地址),分支指令通常分為直接、間接或相對,這意味著該指令包含目標地址,或者指定目標地址在哪里 要找到的(例如,寄存器或內存位置),或者它指定當前地址和目標地址之間的差異。

    實施

    編輯

    分支指令可以改變 CPU 的程序計數器(或 PC)(或 Intel 微處理器上的指令指針)的內容。 PC維護下一條要獲取和執行的機器指令的內存地址。 因此,一個分支如果被執行,會導致 CPU 從一個新的內存地址開始執行代碼,根據程序員計劃的算法改變程序邏輯

    一種機器級分支是跳轉指令。 這些可能會或可能不會導致 PC 被加載或修改為一些新的、不同的值,而不是它通常的值(遞增超過當前指令以指向下一條指令)。 跳轉通常有無條件和有條件的形式,其中后者可能被采用或不被采用(修改或不修改 PC)取決于某些條件。

    第二種機器級分支是用于實現子程序的調用指令。 與跳轉指令一樣,調用可能會或可能不會根據條件代碼修改 PC,但是,另外一個返回地址保存在內存中的安全位置(通常在稱為堆棧的內存駐留數據結構中)。 子程序完成后,該返回地址將恢復到 PC,因此程序將繼續執行 call 指令之后的指令。

    第三種機器級分支是返回指令。 這會從堆棧中彈出一個返回地址并將其加載到 PC 寄存器中,從而將控制權返回給調用例程。 返回指令也可以有條件地執行。 此描述適用于普通實踐; 然而,機器程序員有相當大的權力來操縱堆棧上的返回地址,因此可以用許多不同的方式重定向程序的執行。

    根據處理器的不同,跳轉和調用指令可能會以不同的方式改變 PC 寄存器的內容。 可以加載xxx地址,或者 PC 的當前內容可以在其當前值中添加或減去某個值(或位移),從而使目標地址相對于程序中的當前位置。 位移值的來源可能不同,例如指令中嵌入的立即值,或者處理器寄存器或內存位置的內容,或者添加到索引值的某個位置的內容。

    當指代高級編程語言中的程序時,也可以使用術語分支。 在這些分支中通常采用各種形式的條件語句的形式,封裝了條件滿足時將要執行的指令序列。 GOTO 等無條件分支指令用于無條件跳轉到不同的指令序列。 如果算法需要條件分支,則 GOTO(或 GOSUB 子程序調用)之前有一個 IF-THEN 語句指定條件。

    分支 (計算機科學)

    所有高級語言都支持可以將代碼重用為循環的算法,循環是一種重復指令序列的控制結構,直到滿足導致循環終止的某些條件為止。 循環也有資格作為分支指令。 在機器級別,循環被實現為將執行重定向到重復代碼的普通條件跳轉。

    在帶有標志寄存器的 CPU 中,較早的指令會在標志寄存器中設置條件。 較早的指令可以是算術指令或邏輯指令。 它通常靠近分支,但不一定是分支之前的指令。 然后將存儲的條件用于分支,例如如果設置了溢出標志則跳轉。 此臨時信息通常存儲在標志寄存器中,但也可能位于其他位置。 標志寄存器設計在較慢、簡單的計算機中很簡單。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/196054/

    (1)
    詞條目錄
    1. 分支(計算機科學)
    2. 實施

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久