상세 컨텐츠

본문 제목

InterlockedExchangeAdd64 for Delphi

프로그래밍/Delphi

by ryujt 2014. 7. 1. 17:08

본문

InterlockedExchangeAdd64 for Delphi


{$IFDEF CPUX86}
function  InterlockedExchangeAdd64(var Addend: Int64; Value: longword): Int64; register;
asm
          PUSH    EDI
          PUSH    ESI
          PUSH    EBX

          MOV     EDI, EAX
          MOV     ESI, EDX

          MOV     EAX, [EDI]
          MOV     EDX, [EDI+4]
@@1:
          MOV     ECX, EDX
          MOV     EBX, EAX

          ADD     EBX, ESI
          ADC     ECX, 0

LOCK      CMPXCHG8B [EDI]
          JNZ     @@1

          POP     EBX
          POP     ESI
          POP     EDI
end;
{$ENDIF}

{$IFDEF CPUX64}
function  InterlockedExchangeAdd64(var Addend: Int64; Value: longword): Int64; register;
asm
          .NOFRAME
          MOV     RAX, RDX
          LOCK    XADD [RCX], RAX
end;
{$ENDIF}


참고자료


관련글 더보기