summaryrefslogtreecommitdiff
path: root/zap/source/amd64/mem/strcp.S
diff options
context:
space:
mode:
Diffstat (limited to 'zap/source/amd64/mem/strcp.S')
-rw-r--r--zap/source/amd64/mem/strcp.S43
1 files changed, 0 insertions, 43 deletions
diff --git a/zap/source/amd64/mem/strcp.S b/zap/source/amd64/mem/strcp.S
deleted file mode 100644
index 820ed96..0000000
--- a/zap/source/amd64/mem/strcp.S
+++ /dev/null
@@ -1,43 +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_strcp
-
-zap_strcp:
-# Address of the current input character:
-#define iaddr %rax
-# Address of the first input character:
-#define start %rdi
-# Address of the current output character:
-#define oaddr %rsi
-# Current character:
-#define chr %dl
-
- movq start,iaddr
-
- # Iterate over the strings:
-.loop:
-
- # Copy character:
- movb (iaddr),chr # chr = *iaddr
- movb chr,(oaddr) # *oaddr = chr
-
- # Check if we have reached the null-terminator:
- testb chr,chr # if (chr == 0x0)
- jz .done # goto done
-
- # Continue to the next character:
-
- incq iaddr # ++iaddr
- incq oaddr # ++oaddr
- jmp .loop # goto loop
-
- # Finish:
-.done:
-
- # Get the length of the (input) string:
- subq start,iaddr # iaddr -= start
- decq iaddr # --iaddr // We do not count the null-terminator in the string length.
-
- ret # return iaddr