80x86 上的原子位域操作?

发布于 2024-08-11 15:36:26 字数 34 浏览 7 评论 0原文

80x86 是否有用于原子测试和设置字的各个位的指令?

Does 80x86 have instructions for atomically testing and setting individual bits of a word?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时间海 2024-08-18 15:36:26

如果您的意思是将测试和修改位作为单个原子操作,则可以使用 LOCK 前缀将位测试指令(BT、BTS、BTR 和 BTC)全部设为原子操作。

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

如果您需要更复杂的操作,例如测试一位然后设置另一位,则必须在重试循环中使用标准比较和交换 CMPXCHG 指令。

If you mean testing and modifying a bit as a single atomic operation, then the bit test instructions (BT, BTS, BTR, and BTC) can all be made atomic by using the LOCK prefix.

If you mean testing a bit atomically, and then setting a bit atomically as separate operations, you can test the bit using a standard atomic read, and modifying the bit can be done using LOCK OR, LOCK AND, LOCK XOR instructions.

If you need something more complicated, e.g. testing one bit and then setting a different bit, you'll have to use the standard compare-and-swap CMPXCHG instruction in a retry loop.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文