diff --git a/deps/ox/src/ox/std/memops.cpp b/deps/ox/src/ox/std/memops.cpp index 3345fbe1..55d70cab 100644 --- a/deps/ox/src/ox/std/memops.cpp +++ b/deps/ox/src/ox/std/memops.cpp @@ -19,6 +19,10 @@ void *ox_inhibit_loop_to_libcall memcpy(void *dest, const void *src, std::size_t return ox_memcpy(dest, src, size); } +void *ox_inhibit_loop_to_libcall memmove(void *dest, const void *src, std::size_t size) { + return ox_memcpy(dest, src, size); +} + void *ox_inhibit_loop_to_libcall memset(void *ptr, int val, std::size_t size) { return ox_memset(ptr, val, size); } diff --git a/deps/ox/src/ox/std/memops.hpp b/deps/ox/src/ox/std/memops.hpp index 679d2a0b..b361942e 100644 --- a/deps/ox/src/ox/std/memops.hpp +++ b/deps/ox/src/ox/std/memops.hpp @@ -17,6 +17,8 @@ extern "C" { void *memcpy(void *dest, const void *src, std::size_t size); +void *memmove(void *dest, const void *src, std::size_t size); + void *memset(void *ptr, int val, std::size_t size); } @@ -33,6 +35,15 @@ constexpr void *ox_memcpy(void *dest, const void *src, std::size_t size) noexcep return dest; } +constexpr void *ox_memmove(void *dest, const void *src, std::size_t size) noexcept { + auto srcBuf = static_cast(src); + auto dstBuf = static_cast(dest); + for (std::size_t i = 0; i < size; i++) { + dstBuf[i] = static_cast(srcBuf[i]); + } + return dest; +} + constexpr void *ox_memset(void *ptr, int val, std::size_t size) noexcept { auto buf = static_cast(ptr); for (std::size_t i = 0; i < size; i++) {