Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. ## Zadanie 8. x * y
  2.  
  3. *Argumeny:* x, y : 128b (16B) liczby całkowite **bez znaku**
  4. | %rdi x1 | %rsi x0 | := x
  5. | %rdx y1 | %rcx y0 | := y
  6.  
  7. *Wynik:* w %rax i %rdx
  8.  
  9. (x1 * 2^64 + x0) * (y1 * 2^64 + y0) =
  10. = x1y1 * 2^128 + (x1y0 + x0y1) * 2^64 + x0y0
  11.  
  12. ```
  13. mul128: ; Liczymy (x1y0 + x0y1) * 2^64 + x0y0
  14. movq %rdx, %rax ; rax := y1
  15. mulq %rsi ; rdx|rax := y1 * x0
  16. movq %rax, %r8 ; r8 := x0y1 lower
  17.  
  18. movq %rdi, %rax ; rax := x1
  19. mulq %rcx ; rdx|rax := x1 * y0
  20. movq %rax, %r9 ; r9 := x1y0 lower
  21.  
  22. movq %rsi, %rax ; rax := x0
  23. mulq %rcx ; rdx|rax := x0 * y0
  24. movq %rax, %r10 ; r10 := x0y0 lower
  25.  
  26. leaq (%r8,%r9),%rax ; rax := x0y1 lower + x1y0 lower
  27. addq %rdx, %rax ; rax := rax + x0y0 higher
  28.  
  29. movq %r10, %rdx
  30. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement