JG
Size: a a a
JG
JG
ЕК
ЕК
xacquire lock inc [m]), читаешь это значение, там 1. Читаешь из другого потока, он видит его как 0. Т.е. оно меняется только для того потока, который его изменил. Если во втором потоке записать туда 2 (так же через xacquire), третий поток всё равно увидит 0 (а первый 1, второй 2).ЕК
JG
JG
ЕК
JG
JG
ЕК
ЕК
org 0x100Запускаю в VMware (MS-DOS).
; Enable SSE
mov eax,cr0
and al,0xFB ; clear coprocessor emulation CR0.EM (bit 2)
or al,0x2 ; set coprocessor monitoring CR0.MP (bit 1)
mov cr0,eax
mov eax,cr4
or eax,0x40600 ; set CR4.OSFXSR (bit 9), CR4.OSXMMEXCPT (bit 10) and CR4.OSXSAVE (bit 18)
mov cr4,eax
; Enable AVX
xor ecx,ecx
xgetbv ; load XCR0 register
or al,7 ; set AVX, SSE, x87 bits
xsetbv ; save back to XCR0
; Test SSE
xorps xmm0,xmm0
xorps xmm1,xmm1
addss xmm0,xmm1
; Test AVX
vzeroupper
vxorps xmm0,xmm0,xmm0
vxorps xmm1,xmm1,xmm1
vaddps xmm2,xmm0,xmm1
ret
ЕК
mov eax, 1
cpuid
and ecx, 018000000H
cmp ecx, 018000000H; check both OSXSAVE and AVX feature flags
jne not_supported
; processor supports AVX instructions and XGETBV is enabled by OS
mov ecx, 0; specify 0 for XCR0 register
xgetbv ; result in EDX:EAX
and eax, 06H
cmp eax, 06H; check OS has enabled both XMM and YMM state support
jne not_supported
mov eax, 1
jmp done
not_supported:
mov eax, 0
done:ЕК
ЕК
R
R