c00*_*0fd 7 assembly winapi x86-64 intel spinlock
我一直在EnterCriticalSection对 Windows 10 上的函数进行逆向工程,发现了这个有趣的自旋循环:
它是这样的:
lbl_loop:
mov ecx, [rsp+60h]
mov ecx, [rsp+60h]
mov ecx, [rsp+60h]
pause
mov ecx, [rsp+60h]
inc ecx
mov [rsp+60h], ecx
cmp ecx, eax
jb lbl_loop
Run Code Online (Sandbox Code Playgroud)
[rsp+60h]所以我的问题是 -循环读取 4 次然后写回的目的是什么?
为什么他们不能这样做:
lbl_loop:
pause
inc ecx
cmp ecx, eax
jb lbl_loop
mov [rsp+60h], ecx
Run Code Online (Sandbox Code Playgroud)
附言。请注意,这是 Windows 10 的生产版本。其余功能EnterCriticalSection均已优化。所以这不是调试版本。