安騰(R) 處理器主題cmpxchg - 比較與交換指令

cmpxchg

操作 字型慣例

指令型別 M

格式

(qp) cmpxchgsz.sem.ldhint r1 = [r3], r2, ar.ccv


說明

GRr3 中的值指定的地址開始,從記憶體中讀取 sz 個位元組組成的值。此值執行零擴充套件,並與 cmpxchg“比較值”應用暫存器 (AR CCV]) 的內容進行比較。如果兩者相等,則 GR r2 中的值的最低有效 sz 位元組從 GR r3 中的值指定的地址開始寫入記憶體。從記憶體讀取的經過零擴充套件的值放入 GR r1,並清除 GR r1 對應的 NaT 位。

sz 完成符的值在記憶體比較與交換大小表格中。sem 完成符指定訊號量操作的型別。這些操作的介紹詳見比較與交換訊號量型別表格。

如果 GR r3 中的值指定的地址未自然對齊記憶體中訪問的值的大小,則不管“使用者掩碼”對齊檢查位 UM.ac(在“處理器狀態暫存器”中,是 PSR.ac)的狀態如何,都將執行“未對齊的數據引用”錯誤的處理。

記憶體讀取與寫入確保是原子型(不可再分)指令。

對於引用的頁,同時需要讀取與寫入訪問許可權。無論是否執行記憶體寫入,都將執行寫入訪問許可權檢查。

只有採用寫回型寫入策略的可快取頁才支援此指令。訪問 NaTPage 會導致“數據 NaT 頁使用”錯誤。訪問使用其它記憶體屬性的頁會導致“不支援的數據引用”錯誤。

ldhint 完成符的值指定記憶體訪問的區域性。ldhint 完成符的值在載入提示表格中給出。區域性提示不影響程式功能,在實現的版本中可能會被忽略。如需有關詳細資訊,請參閱第 4-17 頁上的“記憶體層次結構控制與一致性”。