x86 32/64 位架构
如果在某个对齐的地址下有一条数据,我们同时对它执行读取和写入——来自两个不同的 CPU——但我们不关心它们的顺序。在没有锁和栅栏的情况下这样做是否安全?
具体来说,是否同时执行以下指令不会在 EAX 中出现类似 111...000 的情况?
MOV DWORD PTR [addr], 0xffffffff
MOV DWORD PTR [addr], 0
MOV EAX, DWORD PTR [addr]
哪里addr == 4n
。
如果不是,那 unalignedaddr
呢?
另外切换到64位怎么样?