diff options
Diffstat (limited to 'source/memory.c')
| -rw-r--r-- | source/memory.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/source/memory.c b/source/memory.c new file mode 100644 index 0000000..b9d0405 --- /dev/null +++ b/source/memory.c @@ -0,0 +1,48 @@ +#include <stdint.h> +#include "memory.h" + +void *memcpy(void *dest, const void *src, const size_t n) { + uint8_t *destB = (void *)dest; + const uint8_t *srcB = (void *)src; + + for (size_t i = 0; i < n; i++) { + destB[i] = srcB[i]; + } + + return dest; +} + +void *memset(void *s, int c, size_t n) { + uint8_t *sB = (uint8_t *)s; + + for (size_t i = 0; i < n; i++) { + sB[i] = (uint8_t)c; + } + + return s; +} + +void *memmove(void *dest, const void *src, const size_t n) { + uint8_t *db = (uint8_t *)dest; + const uint8_t *sb = (const uint8_t *)src; + + for (size_t i = n; i > 0; i--) { + db[i - 1] = sb[i - 1]; + } + + return dest; +} + +int memcmp(const void *s1, const void *s2, const size_t n) { + const uint8_t *s1b = (const uint8_t *)s1; + const uint8_t *s2b = (const uint8_t *)s2; + + for (size_t i = 0; i < n; i++) { + if (s1b[i] != s2b[i]) { + return ((s1b[i] > s2b[i]) ? 1 : -1); + } + } + + return 0; +} + |
