From 57ab6985b524ee5d45cd2471fa3af0917d93da34 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 23 Dec 2025 20:00:46 +0100 Subject: kstd/libc: implement basic memmove --- libs/kstd/src/libc/string.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/libs/kstd/src/libc/string.cpp b/libs/kstd/src/libc/string.cpp index 319f6fd..b7d4c6b 100644 --- a/libs/kstd/src/libc/string.cpp +++ b/libs/kstd/src/libc/string.cpp @@ -27,6 +27,27 @@ namespace kstd::libc return std::bit_cast(*mismatched.in1) - std::bit_cast(*mismatched.in2); } + + auto memmove(void * dest, void const * src, std::size_t size) -> void * + { + auto dest_span = std::span{static_cast(dest), size}; + auto src_span = std::span{static_cast(src), size}; + if (dest < src) + { + for (std::size_t i = 0; i < size; ++i) + { + dest_span[i] = src_span[i]; + } + } + else + { + for (std::size_t i = size; i > 0; --i) + { + dest_span[i - 1] = src_span[i - 1]; + } + } + return dest; + } } } // namespace kstd::libc \ No newline at end of file -- cgit v1.2.3