diff options
Diffstat (limited to 'zap/src/mem/streq.S')
-rw-r--r-- | zap/src/mem/streq.S | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/zap/src/mem/streq.S b/zap/src/mem/streq.S deleted file mode 100644 index d331e93..0000000 --- a/zap/src/mem/streq.S +++ /dev/null @@ -1,57 +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/. -*/ - -#include <zap/priv.h> - -.globl zap_streq - -zap_streq: - - /* - char const * lstr - char const * rstr - */ - -#if defined(__amd64__) - - # rdi: Address of the current left character. - # rsi: Address of the current right character. - # rax: Current left character. - # rdx: Current right character. - - # Iterate over the strings: -.loop: - - # Copy the characters into registers: - movb (%rdi),%al - movb (%rsi),%dl - - # Check if the characters are equal: - cmpb %al,%dl - jne .neq # If not, the strings also aren't equal. - - # Check if we have reached the null-terminator: - testb %al,%al - jz .eq # If so, all previous characters have compared equal, and the strings are equal. - - # Continue to the next characters: - incq %rdi - incq %rsi - jmp .loop - - # The strings have compared equal: -.eq: - - movb $0xFF,%al - ret - - /* The strings have compared unequal: */ -.neq: - - movb $0x0,%al - ret - -#endif |