Привет, ребята, я очень новичок в delphi, и в моем приложении есть так много функций ассемблера, которые ранее использовались для windows (32-разрядных и 64-разрядных). Но так как сейчас я перевожу свое приложение из windows в Linux (64-битные) функции asm, там не поддерживается. Так что если кто-нибудь может поддержать / помочь в понимании этой функции asm. Спасибо заранее.
function InterlockedCompareAndStore128(var dest, newVal, oldVal) : boolean; assembler;
asm
push rbx
push rdi
mov rdi, rcx // ptr to dest -> RDI
mov rcx, [rdx+8] // newVal -> RCX:RBX
mov rbx, [rdx]
mov rdx, [r8+8] // oldVal -> RDX:RAX
mov rax, [r8]
lock cmpxchg16b [rdi]
mov rax, 0
jnz @exit
inc rax
@exit:
pop rdi
pop rbx
end;