【发布时间】:2012-07-08 15:15:07
【问题描述】:
当使用_InterlockedIncrement 时,Visual Studio 会生成以下机器代码:
; 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] 而不是 mov 和 xadd
Microsoft 首选 xadd 并使用 2 条指令而不是 1 条指令是否有正当理由?
【问题讨论】:
标签: visual-studio-2010 assembly x86 intrinsics