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