프로그래밍/Delphi
InterlockedExchangeAdd64 for Delphi
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}
참고자료
- http://x86.renejeschke.de/html/file_module_x86_id_327.html
- http://qc.embarcadero.com/wc/qcmain.aspx?d=6212