Windows 关键部分的自旋锁中的这些填充指令的目的是什么?

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均已优化。所以这不是调试版本。