操作碼 |
指令 |
說明 |
F0 |
LOCK |
在伴隨指令的持續期間聲言 LOCK# 訊號 |
導致在執行伴隨指令期間,聲言處理器的 LOCK# 訊號(使指令成為原子指令)。在多處理器環境中,LOCK# 訊號確保在聲言該訊號期間,處理器可以獨佔使用任何共享記憶體。
請注意,在後期的“英特爾(R) 體系結構”處理器(如奔騰® Pro 處理器)中,鎖定可能會在沒有聲言 LOCK# 訊號的情況下發生。請參閱下面的“英特爾(R) 體系結構相容性”。
LOCK 字首只能用在以下指令的前面,並且僅限使用記憶體運算元形式的這些指令:ADD、ADC、AND、BTC、BTR、BTS、CMPXCHG、DEC、INC、NEG、NOT、OR、SBB、SUB、XOR、XADD 及 XCHG。如果同其它任何指令一起使用 LOCK 字首,則產生操作碼未定義異常。不論是否使用 LOCK 字首,XCHG 指令總是聲言 LOCK# 訊號。
LOCK 字首通常同 BTS 指令一起使用,以便在共享記憶體環境中讀取-修改-寫入記憶體位置。
記憶體欄位是否對齊不影響 LOCK 字首的完整性。對於雜亂的未對齊欄位,會遵循記憶體鎖定規則。
從奔騰 Pro 處理器開始,在指令前面加上 LOCK 字首,並且訪問的記憶體區域已快取到處理器內部時,通常不聲言 LOCK# 訊號。相反,此時只鎖定處理器的快取。這裡,處理器的快取一致性機制可以確保自動執行與記憶體相關的操作。如需有關快取鎖定的詳細資訊,請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 3 卷第 7 章中的“鎖定操作對內部處理器快取的影響”。
AssertLOCK#(DurationOfAccompaningInstruction)
無。
#UD - 如果 LOCK 字首同上述“說明”部分未列出的指令一起使用。使用 LOCK 字首的指令可能會產生其它異常。
#UD - 如果 LOCK 字首同上述“說明”部分未列出的指令一起使用。使用 LOCK 字首的指令可能會產生其它異常。
#UD - 如果 LOCK 字首同上述“說明”部分未列出的指令一起使用。使用 LOCK 字首的指令可能會產生其它異常。