преобразование функции ассемблера InterlockedCompareAndStore128 () для windows 64 бит в не ассемблер для Linux 64 бит - PullRequest
0 голосов
/ 22 апреля 2020

Привет, ребята, я очень новичок в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...