From c5fcf7179a83ef65c86c6a4a390029149e518649 Mon Sep 17 00:00:00 2001 From: Franciszek Malinka Date: Tue, 5 Oct 2021 21:49:54 +0200 Subject: Duzy commit ze smieciami --- semestr-4/ask/lista5/puzzle4.s | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 semestr-4/ask/lista5/puzzle4.s (limited to 'semestr-4/ask/lista5/puzzle4.s') diff --git a/semestr-4/ask/lista5/puzzle4.s b/semestr-4/ask/lista5/puzzle4.s new file mode 100644 index 0000000..16ca386 --- /dev/null +++ b/semestr-4/ask/lista5/puzzle4.s @@ -0,0 +1,24 @@ +.global puzzle4 + +.text +puzzle4: # argumenty: rdi - long*, rsi - long, rdx - uint64, rcx - uint64 + movq %rcx, %rax # rax := rcx + subq %rdx, %rax # rax -= rdx + shrq %rax # rax >>= 1; // ale logiczne! + addq %rdx, %rax # rax += rdx; + cmpq %rdx, %rcx # if rcx < rdx + jb .L5 # then jump to L5 + movq (%rdi,%rax,8), %r8 # r8 = *(rdi + 8*rax) + cmpq %rsi, %r8 # if rsi == r8 + je .L10 # then jump to L10 + cmpq %rsi, %r8 # if (r8 - rsi < 0) <=> r8 < rsi + jg .L11 # then jump to L11 + leaq 1(%rax), %rdx # rdx := rax + 1 + call puzzle4 # call recursively puzzle4 +.L10: ret # return rax +.L11: leaq -1(%rax), %rcx # rcx := rax - 1 + call puzzle4 # call recursively puzzle4 + ret # return rax +.L5: movl $-1, %eax # eax := -1 + ret # return rax + -- cgit v1.2.3