diff options
Diffstat (limited to 'zap/source/amd64/mem/memfnd.S')
-rw-r--r-- | zap/source/amd64/mem/memfnd.S | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/zap/source/amd64/mem/memfnd.S b/zap/source/amd64/mem/memfnd.S deleted file mode 100644 index e1f8c30..0000000 --- a/zap/source/amd64/mem/memfnd.S +++ /dev/null @@ -1,50 +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_memfnd - -zap_memfnd: -# Address of the current element: -#define addr %rax -# Address of the first element: -#define start %rdi -# Address of the element after the last element: -#define afterbuf %rsi -# Byte value: -#define cmp %dl -# Current byte: -#define val %cl - - movq start,addr # addr = start - - addq start,afterbuf # afterbuf += start - - # Iterate over the array: -.loop: - - # Check if we have reached the end of the array: - cmpq addr,afterbuf # if (addr == afterbuf) - je .nfnd # goto nfnd - - # Check if we have found the byte value: - movb (addr),val # val = *addr - cmpb val,cmp # if (val == cmp) - je .fnd # goto fnd - - # Continue to the next byte: - incq addr # ++addr - jmp .loop # goto loop - - # Found: -.fnd: - - # Get the offset of the byte: - subq start,addr # addr -= start - ret # return addr - - # Not found: -.nfnd: - - movq $0xFFFFFFFFFFFFFFFF,addr # addr = 0xFFFFFFFFFFFFFFFF - ret # return addr |