Атомарные битовые операции на 80x86? - PullRequest
1 голос
/ 17 ноября 2009

Есть ли в 80x86 инструкции для атомарного тестирования и установки отдельных битов слова?

1 Ответ

7 голосов
/ 17 ноября 2009

Если вы имеете в виду тестирование и модификацию бита как одной атомарной операции, то все команды битового теста (BT, BTS, BTR и BTC) можно сделать атомарными с помощью префикса LOCK.

Если вы хотите протестировать бит атомарно, а затем установить бит атомарно как отдельные операции, вы можете протестировать бит, используя стандартное атомарное чтение, а модификацию бита можно выполнить с помощью инструкций LOCK OR, LOCK AND, LOCK XOR.

Если вам нужно что-то более сложное, например, тестируя один бит, а затем устанавливая другой бит, вы должны будете использовать стандартную инструкцию CMPXCHG сравнения и замены в цикле повтора.

...