summaryrefslogtreecommitdiff
path: root/zap/source/amd64/mem/memfnd.S
diff options
context:
space:
mode:
Diffstat (limited to 'zap/source/amd64/mem/memfnd.S')
-rw-r--r--zap/source/amd64/mem/memfnd.S50
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