ld
指令型別 M
格式
(qp) ldsz.ldtype.ldhint r1 = [r3] no_base_update_form
(qp) ldsz.ldtype.ldhint r1 = [r3], r2 reg_base_update_form
(qp) ldsz.ldtype.ldhint r1 = [r3], imm9 imm_base_update_form
(qp) ld8.fill.ldhint r1 = [r3] fill_form, no_base_update_form
(qp) ld8.fill.ldhint r1 = [r3], r2 fill_form, reg_base_update_form
(qp) ld8.fill.ldhint r1 = [r3], imm9 fill_form, imm_base_update_form
說明
從 GRr3 中的值指定的地址開始,從記憶體中讀取 sz 個位元組組成的值。然後此值執行零擴充套件,並放入 GR r1。清除 GR r1 對應的 NaT 位,下面在推測性載入部分介紹的除外。ldtype 完成符指定特殊的載入操作。
對於 fill_form,載入 8 位元組值,UNAT 應用暫存器中的位複製到目標暫存器 NaT 位。此指令用於重新載入轉存的暫存器/NaT 對。
在基址更新形式中,GR r3 中的值加到有符號的立即數 (imm9) 或 GR r2 中的值上,隨後結果放回 GR r3。載入之後便完成此基址暫存器的更新,且不影響載入地址。在 reg_base_update_form 中,如果設定 GR r2 對應的 NaT 位,則 GR r3 對應的 NaT 位也會設定為 1,且不觸發任何錯誤。
對於非推測性載入型別,如果與 GR r3 關聯的 NaT 位是 1,則執行“暫存器 NaT 使用”錯誤的處理。對於推測性載入與推測性高級載入,不觸發任何錯誤,而且會緩發異常。對於基址更新計算,如果與 GR r2 關聯的 NaT 位是 1,則與 GR r3 關聯的 NaT 位設定為 1,而且不觸發任何錯誤。
ldhint 完成符的值指定記憶體訪問的區域性。在基址更新形式中,會暗示預取提示。基址更新之後 GR r3 中的值指定的地址充當預取指定的快取線提示。此預取操作使用 ldhint 指定的區域性提示。預取與區域性提示不影響程式功能,在具體實現的版本中可能會被忽略。
在 no_base_update 形式中,GR r3 中的值不修改,並且不暗示任何預取提示。
對於基址更新形式,在 r1 與 r3 中指定相同的暫存器地址時,將會導致“非法操作”錯誤。