Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- licznik:
- .quad 0
- bylo:
- .byte 0
- zero:
- .byte 0
- .text
- .type check_tabA, @function
- .global check_tabA
- # int* tab %rdi
- # int n %rsi
- # int* max %rdx
- check_tabA:
- MOV %rdi, %r8 # tab*
- XOR %rax, %rax # sum = 0
- MOV $1, %r11 # maska
- XOR %r9, %r9 # i = 0 .. 64
- MOV $64, %rcx # count = 64
- next: # for 64 razy
- MOVQ $0, licznik # licznik = 0
- MOVB $0, bylo # bylo = 0
- # inside loop ---------------------------------
- XOR %r10, %r10 # j = 0 .. n
- nextinside:
- ADD %r10, %r8 # tab[j]
- CMP (%r8), %r9 # if(tab[j] == i)
- JNE continueinside
- ADDQ $1, licznik
- CMPB $0, bylo # if(bylo == 0)
- JNE continueinside
- ADD $1, bylo # bylo = 1
- OR %r11, %rax
- continueinside:
- SUB %r10, %r8 # przywroc tab
- INC %r10
- CMP %r10, %rsi
- JNE nextinside
- # inside loop ---------------------------------
- MOV (%rdx), %r12 # max
- CMP licznik, %r12 # if(licznik > max)
- JGE continue
- MOV licznik, %r12
- MOV %r12, (%rdx)
- continue:
- SHL $1, %r11 # przesun maske
- INC %r9
- LOOP next
- RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement