Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Zadanie 8. x * y
- *Argumeny:* x, y : 128b (16B) liczby całkowite **bez znaku**
- | %rdi x1 | %rsi x0 | := x
- | %rdx y1 | %rcx y0 | := y
- *Wynik:* w %rax i %rdx
- (x1 * 2^64 + x0) * (y1 * 2^64 + y0) =
- = x1y1 * 2^128 + (x1y0 + x0y1) * 2^64 + x0y0
- ```
- mul128: ; Liczymy (x1y0 + x0y1) * 2^64 + x0y0
- movq %rdx, %rax ; rax := y1
- mulq %rsi ; rdx|rax := y1 * x0
- movq %rax, %r8 ; r8 := x0y1 lower
- movq %rdi, %rax ; rax := x1
- mulq %rcx ; rdx|rax := x1 * y0
- movq %rax, %r9 ; r9 := x1y0 lower
- movq %rsi, %rax ; rax := x0
- mulq %rcx ; rdx|rax := x0 * y0
- movq %rax, %r10 ; r10 := x0y0 lower
- leaq (%r8,%r9),%rax ; rax := x0y1 lower + x1y0 lower
- addq %rdx, %rax ; rax := rax + x0y0 higher
- movq %r10, %rdx
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement