Существует ли 8-битный атомарный CAS (cmpxchg), встроенный для X64 в Visual C ++?

Следующий код возможен в 32-разрядной Visual Studio C ++. Существует ли 64-разрядный эквивалент с использованием встроенных функций, поскольку встроенный ASM не поддерживается в 64-разрядной версии Visual Studio C ++?

FORCEINLINE bool bAtomicCAS8(volatile UINT8 *dest, UINT8 oldval, UINT8 newval)
{
    bool result=false;
    __asm
    {
        mov     al,oldval
        mov     edx,dest
        mov     cl,newval
        lock cmpxchg    byte ptr [edx],cl
        setz    result
    }
    return(result);
}

Следующие встроенные компоненты компилируются под Visual Studio C ++

_InterlockedCompareExchange16
_InterlockedCompareExchange
_InterlockedCompareExchange64
_InterlockedCompareExchange128

Я ищу что-то вроде строки

_InterlockedCompareExchange8

Но, похоже, этого не существует.

6
задан Marinos An 17 January 2019 в 19:11
поделиться