Ist x86 CMPXCHG atomar, wenn ja, warum braucht es LOCK?

DasIntel documentation sagt

Diese Anweisung kann mit einem @ verwendet werdLOCK Präfix, damit der Befehl atomar ausgeführt werden kann.

Meine Frage is

KönnenCMPXCHG Mit Speicheradresse arbeiten? Aus dem Dokument scheint es nicht, aber kann jemand bestätigen, dass nur mit dem tatsächlichen Wert in den Registern gearbeitet wird, nicht mit der Speicheradresse?

WennCMPXCHG ist nicht atomar und ein High-Level-Sprachlevel CAS muss implementiert werden durchLOCK CMPXCHG (mitLOCKpräfix), wozu soll eine solche Anweisung überhaupt eingeführt werden?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage