diff options
Diffstat (limited to 'zap/source/amd64/mem/memeq.S')
-rw-r--r-- | zap/source/amd64/mem/memeq.S | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/zap/source/amd64/mem/memeq.S b/zap/source/amd64/mem/memeq.S deleted file mode 100644 index b30a884..0000000 --- a/zap/source/amd64/mem/memeq.S +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2022 Gabriel Jensen. -# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -# If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. - -.globl zap_memeq - -zap_memeq: -# Left pointer: -#define laddr %rdi -# Number of remaining elements: -#define rem %rsi -# Right pointer: -#define raddr %rdx -# Current left element: -#define lval8 %rax -#define lval1 %al -# Current right element: -#define rval8 %rcx -#define rval1 %cl - - # Compare words: -.wrdcmp: - - # Check if there's at least one word left: - cmpq $0x8,rem # if (rem == 8) - jl .bytecmp # goto bytecmp - - # Copy the values into registers: - movq (laddr),lval8 # lval8 = *laddr - movq (raddr),rval8 # rval8 = *raddr - - # Check if the words are equal: - cmpq lval8,rval8 # if (lval8 != rval8) - jne .neq # goto neq - - # Mark eight more bytes as equal: - addq $0x8,laddr # laddr += 0x8 - addq $0x8,raddr # raddr += 0x8 - subq $0x8,rem # rem -= 0x8 - - # Continue to the next word: - jmp .wrdcmp # goto wrdcmp - - # Compare bytes: -.bytecmp: - - # Check if there are any bytes left: - testq rem,rem # if (rem == 0x0) - jz .eq # goto eq // If we have reached the final element, all previous elements have compared equal, and the memory sequences are equal. - - # Copy the values into registers: - movb (laddr),lval1 # lval1 = *laddr - movb (raddr),rval1 # rval1 = *raddr - - cmpb lval1,rval1 # if (lval1 != rval1) - jne .neq # goto neq - - # Mark another byte as equal: - incq laddr # ++laddr - incq raddr # ++raddr - decq rem # --rem - - # Continue to the next byte: - jmp .bytecmp # goto bytecmp - - # The memory sequences have compared equal: -.eq: - movb $0xFF,%al - ret # return FF - - # The memory sequences have compared NOT equal: -.neq: - movb $0x0,%al - ret # return 0 |