Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. lobal inc_thread
  2.  
  3. section .data
  4.   spinlock dd 0
  5.  
  6. section .text
  7.  
  8. align 8
  9. inc_thread:
  10.   mov     rsi, [rdi]      ; value
  11.   mov     ecx, [rdi + 8]  ; count
  12.   mov     rdx, spinlock
  13.   mov     ebx, 1
  14.   jmp     count_test
  15. count_loop:
  16. busy_wait:
  17.   xor     eax, eax
  18.   lock \
  19.   cmpxchg [rdx], ebx
  20.   jnz     busy_wait
  21.   inc     dword [rsi]     ; ++*value
  22.   mov     dword [rdx], eax
  23. count_test:
  24.   sub     ecx, 1          ; --count
  25.   jge     count_loop      ; skok, gdy count >= 0
  26.   xor     eax, eax        ; return NULL
  27.   ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement