安騰(R) 處理器主題長分支指令

brl

操作 字型慣例

格式

(qp)brl.btype.bwh.ph.dh target 64 X3

(qp)brl.btype.bwh.ph.dh b 1 = target 64 call_form X4

brl.ph.dh target 64 pseudo-op


說明

對分支條件求值,根據結果執行分支,或繼續執行序列中的下一條指令。從邏輯意義上說,分支的執行跟在相同指令組中前面所有非分支指令的執行之後。在執行的分支上,執行從指令槽 0 開始。

長分支總是相對於 IP 的。彙編程式碼中的 target64 運算元指定要執行的分支的標籤。在長分支指令中,它作為立即數位移量 (imm 60) 編碼,放在目標分支束與包含此指令的分支束之間 (imm60 = target64 – IP >> 4)。分支束的 L 指令槽包含 imm60 的 39 個位。

長分支型別

長無條件分支有一個偽操作,其編碼與條件分支類似

(btype = cond),qp 欄位指定 PR 0,並帶 bwh 提示 sptk。

分支型別確定如何計算分支條件,以及分支是否有其它效果(如寫入鏈接暫存器)。對於所有的長分支型別,分支條件只是指定的謂詞暫存器的值:

在“先寫後讀” (RAW) 與“先讀後寫” (WAR) 相關性要求方面,長分支指令與其它指令略有不同,但與分支指令相同。

此指令必須立即後接停止,否則其行為未定義。

各種分支提示完成符的值與分支指令的相同。


警告

此指令未在英特爾(R) 安騰(R) 處理器上實現,每次遇到長分支指令時,不論是否執行分支,都會發生“非法操作”錯誤。要支援英特爾安騰處理器,操作系統需要提供“非法操作”錯誤處理程式,以模擬執行與不執行的長分支。CPUID 暫存器 4 的 lb 位等於 1 表示存在此指令。


中斷

“非法操作”錯誤;“執行分支”陷阱

“未使用的指令地址”陷阱