1
我想在IA-32上執行原子操作和''操作。IA-32 |在多處理器環境中重新排序問題
請考慮以下情況:
; processor 0
lea edx, var
mov ecx, mask
mov eax, [edx]
lock and [edx], ecx
; processor 1
lea edx, var
mov eax, 0xff
xchg [edx], eax
我不知道如果這是可能的,以「無功」的店由處理器1可以或不可以負載和商店「變種」之間occure處理器0 那麼,這個工作還是做我需要自旋鎖是這樣的:
; processor 0
push ebx
lea edx, var
mov ecx, mask
@@loop:
mov ebx, [edx]
mov eax, ebx
and eax, ecx
lock cmpxchg [edx], eax
cmp eax, ebx
jne @@loop
pop ebx
感謝您的任何答覆。最好的祝福。
編輯: 換句話說: 我想執行'處理器0'中的連接並需要獲取初始值。
我已經一遍又一遍地讀過系統程序指南3A:第8.3節,但特別是上面的情況對我來說並不完全清楚。作爲一個側面說明 - 這不是關於原子性,而是關於指令排序。 – 0xbadf00d 2011-02-04 17:34:57