La documentazione di Intel sembra abbastanza chiara che sia ridondante.
Manuale
IA-32 Architettura Intel® dello sviluppatore di software Volume 3A: sistema Programming Guide, Parte 1
7.1.2.1 dice:
Le operazioni su cui il processore segue automaticamente il blocco semantica come segue:
- Quando si esegue un'istruzione XCHG che fa riferimento a m emory.
Allo stesso modo,
Intel® 64 e IA-32 Architetture Manuale dello sviluppatore di software Volume 2B: del set di istruzioni, NZ
XCHG:
Se un si fa riferimento all'operando della memoria, il protocollo di blocco del processore è automaticamente impl ementato per la durata dell'operazione di scambio, indipendentemente dalla presenza o meno del prefisso LOCK o del valore dello IOPL.
noti che questa realtà non significa che il segnale LOCK # è asserito o meno il prefisso LOCK è utilizzato, 7.1.4 descrive come su processori successivi semantica di bloccaggio sono conservato senza un BLOCCO # se la locazione di memoria è memorizzato nella cache. Intelligente, e decisamente sopra la mia testa.
fonte
2010-06-29 20:24:54
Anche l'opzione PrintAssembly su Oracle Hotspot JVM sembra essere d'accordo. Quando genera un assembly, non ha il prefisso di blocco sull'istruzione xchg su x86-64. –