Advertisement
Guest User

Untitled

a guest
Jun 1st, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .type check, @function
  2. .global check
  3. .text
  4.  
  5. ##PROTOTYPE##
  6. #void remove_spaces_asm(char* str);
  7.  
  8. ##ARGS##
  9. # rdi - a
  10. # rsi - b
  11. # rdx - c
  12.  
  13. ##ZADANIE##
  14. #sprawdzic w zaleznosci od parametru c
  15. #c == 0 a dzieli sie calkowicie przez b zwraca reszte
  16. #c != 0 funkcja nie uwzglednia b, sprawdza podzielnosc a
  17. #przez liczby 1..64 zwraca: najbardziej
  18. #znaczacy bit to rezultat dzielenia przez 64,
  19. #najmniej to przez 1
  20.  
  21. check:
  22.       CMP $0, %rdx
  23.       JE sprawdz_reszte
  24.      
  25.       JMP sprawdz_1_64
  26.    
  27. sprawdz_reszte:
  28.     MOV $0,     %rdx
  29.     MOV %rdi,   %rax
  30.    
  31.     DIV %rsi
  32.    
  33.     CMP $0, %rdx
  34.    
  35.     JE bez_reszty
  36.     JMP z_reszta
  37.    
  38. bez_reszty:
  39.     MOV $0, %rax
  40.     RET
  41.    
  42. z_reszta:
  43.     MOV $1, %rax
  44.     RET
  45.  
  46.    
  47. sprawdz_1_64:
  48.     ##DECL
  49.     MOV $0, %r9 #r9 = result
  50.     MOV $64, %r8 #iterator
  51.    
  52. loop:
  53.     MOV $0, %rdx
  54.     MOV %rdi, %rax
  55.    
  56.     DIV %r8
  57.    
  58.     CMP $0, %rdx
  59.    
  60.     JE bez_reszty_1_64
  61.     JMP z_reszta_1_64
  62.    
  63. cont_loop:
  64.     DEC %r8
  65.     CMP $1, %r8
  66.     JE break_loop
  67.     JMP loop
  68.  
  69. bez_reszty_1_64:
  70.     OR $1, %r9
  71.     SHL %r9
  72.     JMP cont_loop
  73.    
  74. z_reszta_1_64:
  75.     SHL %r9
  76.     JMP cont_loop
  77.    
  78. break_loop:
  79.     OR $1, %r9
  80.     MOV %r9, %rax
  81.     RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement