Про компилёр я и не спрашивал, это просто по привычке с темы съехали (именно что миллион раз). Я про mfence, lfence и sfence. Ну, и про префикс lock. Инструкции, да. Компилёр -- чёрт с ним. Допустим, я на асме написал. Да и вообще,
например, пишешь в volatile, чтоб обработчик прерывания понял, и потом только меняешь в глобальном буфере что-то. А компилятор генерирует тебе код, когда он вначале меняет в буфере (порядок разный), а запись в volatile вообще выносит в конец функции перед выходом
насколько я помню, два volatile он переставить не может, так что если важен порядок, просто надо объявить
всех участников оргии как volatile.
Но всё равно речь не о таких барьерах. У меня там 2 mov, спецификация Intel гарантирует атомарность. Когда могут потребоваться именно что
инструкции? Чтобы камень не наконвейерил чего не надо?