Kro*_*oma 3 assembly x86-64 compare-and-swap
我正在阅读英特尔手册,卷。2A。
将 AL、AX、EAX 或 RAX 寄存器中的值与第一个操作数(目标操作数)进行比较。如果两个值相等,则将第二个操作数(源操作数)加载到目标操作数中。否则,目标操作数将加载到 AL、AX、EAX 或 RAX 寄存器中。RAX 寄存器仅在 64 位模式下可用。
如果失败,将目的地加载到累加器中的目的是什么?
这很方便,因此您不必自己执行此操作。通常在循环中使用cmpxchg
,根据当前值计算新值。如果失败,您可能需要重新计算当前值并重试。