chk
指令型別 I、M
格式
(qp) chk.s r2, target25 pseudo-op
(qp) chk.s.i r2, target25 control_form, i-unit_form, gr_form
(qp) chk.s.m r2, target25 control_form, m-unit_form, gr_form
(qp) chk.s f2, target25 control_form, fr_form
(qp) chk.a.aclr r1, target25 data_form, gr_form
(qp) chk.a.aclr f1, target25 data_form, fr_form
說明
檢查控制或數據推測計算的結果是否成功。如果檢查失敗,則執行指向 target25 的分支。
在 control_form 中,成功由源暫存器的 NaT 指示確定。如果 GR r2 對應的 NaT 位是 1(在 gr_form 中),或者 FR f2 包含 NaTVal(在 fr_form 中),則檢查失敗。
在 data_form 中,成功由 ALAT 確定。ALAT 使用通用暫存器指示符 r1(在 gr_form 中)或浮點暫存器指示符 f1(在 fr_form 中)進行查詢。如果不與任何 ALAT 專案匹配,則檢查失敗。有些實施版本可能會提供不管是否有 ALAT 專案匹配均導致檢查失敗的選項。使用通用暫存器指示符 r0 或浮點暫存器指示符 f0 或 f1 的 chk.a 總是失敗。
彙編程式碼的 target64 運算元指定要執行的分支的標籤。在分支指令中,它作為有符號立即數位移量 (imm21) 編碼,放在目標分支束與包含此指令的分支束之間 (imm21 = target25 - IP >> 4)。
此指令的分支行為可以選擇不實施。如果指令應該發生分支,但分支行為卻未實施,則執行“推測性操作”錯誤的處理,imm21 指定的值執行零擴充套件,並放入“中斷立即數控制暫存器”(IIM)。錯誤處理程式給 IIM 值執行符號擴充套件,並將它新增到 IIP 然後再返回,以此來模擬分支。
檢查通用暫存器的 control_form 形式的此指令可以在 I 單元或者 M 單元上編碼。如果要執行的單元型別不重要,則可以使用偽操作。
對於 data_form,如果與某個 ALAT 專案匹配,則可以基於 aclr 完成符的值選擇使匹配的 ALAT 專案失效。