Ответ 1
Документация Intel выглядит довольно ясно, что она избыточна.
IA-32 Intel® Architecture Руководство для разработчиков программного обеспечения Том 3А: Руководство по системному программированию, часть 1
7.1.2.1 говорит:
Операции, при которых процессор автоматически следует за семантикой LOCK, следующим образом:
- При выполнении инструкции XCHG, которая ссылается на память.
Аналогично,
Архитектуры Intel® 64 и IA-32 Руководство для разработчиков программного обеспечения Том 2B: Справочник по набору инструкций, N-Z
XCHG:
Если упоминается операнд памяти, протокол блокировки процессоров автоматически реализованный на протяжении всей операции обмена, независимо от наличия или отсутствия префикса LOCK или значения IOPL.
Обратите внимание, что это фактически не означает, что сигнал LOCK # утверждается, используется ли префикс LOCK, 7.1.4 описывает, как на последующих процессорах блокировка семантики сохраняется без LOCK #, если ячейка памяти кэшируется. Умный, и определенно над моей головой.