diff options
Diffstat (limited to 'rgo/src/fndbyte.S')
-rw-r--r-- | rgo/src/fndbyte.S | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/rgo/src/fndbyte.S b/rgo/src/fndbyte.S deleted file mode 100644 index 0d171cd..0000000 --- a/rgo/src/fndbyte.S +++ /dev/null @@ -1,63 +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 <rgo.h> - -.global rgo_fndbyte - -rgo_fndbyte: - /* - void const * ptr - size_t num - uint8_t byte - */ -#if defined(__i386__) - /* eax: Address of the current element. */ - movl 0x4(%esp),%eax - /* ecx: Address of the element after the last element. */ - movl 0x8(%esp),%ecx - addl %eax,%ecx - /* edx: Byte value. */ - movb 0xC(%esp),%dl - /* ebx: Current element. */ - pushl %ebx -.loop: - cmpl %eax,%ecx - je .nfnd /* We have went through the entire array without finding the byte. */ - movb (%eax),%bl - cmpb %bl,%dl - je .fnd /* We have found the byte. */ - incl %eax - jmp .loop -.fnd: - popl %ebx - subl 0x4(%esp),%eax - ret -.nfnd: - popl %ebx - movl $0xFFFFFFFF,%eax - ret -#elif defined(__x86_64__) - /* rax: Address of the current element. */ - movq %rdi,%rax - /* rsi: Address of the element after the last element. */ - addq %rdi,%rsi - /* rcx: Current element. */ -.loop: - cmpq %rax,%rsi - je .nfnd /* We have went through the entire array without finding the byte. */ - movb (%rax),%cl - cmpb %cl,%dl - je .fnd /* We have found the byte. */ - incq %rax - jmp .loop -.fnd: - subq %rdi,%rax - ret -.nfnd: - movq $0xFFFFFFFFFFFFFFFF,%rax - ret -#endif |