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
如果我要写这篇文章,我会使用 justlock inc DWORD PTR [eax]
而不是mov
andxadd
Microsoft 是否有正当理由首选xadd
并使用 2 条指令而不是 1 条指令?