1

80x86 是否有原子测试和设置单词的各个位的指令?

4

1 回答 1

7

如果您的意思是将位测试和修改作为单个原子操作,那么位测试指令(BT、BTS、BTR 和 BTC)都可以通过使用 LOCK 前缀来实现原子操作。

如果您的意思是原子地测试位,然后将位原子地设置为单独的操作,您可以使用标准原子读取来测试位,并且可以使用 LOCK OR、LOCK AND、LOCK XOR 指令来修改位。

如果您需要更复杂的东西,例如测试一位然后设置不同的位,您将不得不在重试循环中使用标准的比较和交换 CMPXCHG 指令。

于 2009-11-17T11:39:32.410 回答