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}
참고자료
| A simple IDE for Java Script programming (0) | 2016.04.16 |
|---|---|
| 오브젝트 파스칼 입문서 (0) | 2014.12.07 |
| Snappy for Delphi (0) | 2014.02.27 |
| 온라인 강의 - UI 분리 개발 (0) | 2013.12.06 |
| TRichEdit 에서 URL 클릭하기 & 스크롤 락 기능 추가 (0) | 2013.09.30 |