Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .section .text
  2. .global kodiraj
  3. # int kodiraj(long long* vrijednost)
  4.  
  5. kodiraj:
  6.     pushl %ebp
  7.     movl %esp, %ebp
  8.     pushl %ebx
  9.     pushl %esi
  10.    
  11.     movl 8(%ebp), %edx # pokazivac na long long
  12.     movl $0, %ecx # brojac jedinica
  13.     movl $1, %eax # maskica
  14.     movl $0, %esi # povratna vrijednost
  15.    
  16. nizi:
  17.     testl %eax, (%edx)
  18.     jz next_nizi
  19.     incl %ecx # povecaj broj jedinica
  20. next_nizi:
  21.     shll %eax
  22.     jnc nizi
  23.    
  24.     movl $1, %eax # vrati maskicu na pocetak
  25.    
  26. visi:
  27.     testl %eax, 4(%edx)
  28.     jz next_visi
  29.     incl %ecx # povecaj broj jedinica
  30. next_visi:
  31.     shll %eax
  32.     jnc visi
  33.    
  34. ### prebrojali smo jedinice u broju
  35.  
  36.     movl (%edx), %ebx # nizi dio u ebx, da ne bi promjenili originalni broj
  37.     movl $0xFFFF, %eax # 0-15
  38.     andl %eax, %ebx # setovani bitovi 0-15
  39.     orl %ecx, %ebx  # ILI broj jedinica
  40.     addl %ebx, %esi
  41.    
  42.     movl (%edx), %ebx
  43.     shll $16, %eax # 16-31
  44.     andl %eax, %ebx
  45.     orl %ecx, %ebx
  46.     addl %ebx, %esi
  47.    
  48.     # visi dio, ista stvar, samo offset 4 od pokazivaca koji je u edx
  49.    
  50.     movl 4(%edx), %ebx # nizi dio u ebx, da ne bi promjenili originalni broj
  51.     movl $0xFFFF, %eax # 0-15 gornjeg dijela, znaci 32-47
  52.     andl %eax, %ebx # setovani bitovi 0-15
  53.     orl %ecx, %ebx  # ILI broj jedinica
  54.     addl %ebx, %esi
  55.    
  56.     movl 4(%edx), %ebx
  57.     shll $16, %eax # 16-31 (48-63)
  58.     andl %eax, %ebx
  59.     orl %ecx, %ebx
  60.     addl %ebx, %esi
  61.    
  62.     movl %esi, %eax # return value
  63.    
  64. kraj:
  65.     popl %esi
  66.     popl %ebx
  67.     movl %ebp, %esp
  68.     popl %ebp
  69.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement