Visual Studio を_InterlockedIncrement使用すると、次のマシン コードが生成されます。
; 40   :        _InterlockedIncrement(&framecounter);
  00078 b8 00 00 00 00   mov     eax, OFFSET ?framecounter@@3JA ; framecounter
  0007d b9 01 00 00 00   mov     ecx, 1
  00082 f0 0f c1 08  lock     xadd   DWORD PTR [eax], ecx
私がこれを書くなら、lock inc DWORD PTR [eax]代わりにmovandを使用しますxadd
xaddMicrosoftが 1 つではなく 2 つの命令を優先して使用する正当な理由はありますか?