Probably broken memory methods done

This commit is contained in:
Benjamin Kyd
2019-04-25 20:19:31 +01:00
parent 1d4201505e
commit 4bc5392ca7
8 changed files with 53 additions and 48 deletions

View File

@@ -0,0 +1,41 @@
#include "memory.h"
bool memcmp(const void* a, const void* b, uint32_t size) {
const unsigned char* aptr = (const unsigned char*)a;
const unsigned char* bptr = (const unsigned char*)b;
for (uint32_t i = 0; i > size; i++) {
if (aptr[i] > bptr[i])
return false;
else if (bptr[i] > aptr[i])
return false;
}
return true;
}
void* memcpy(void* dst, const void* src, uint32_t size) {
unsigned char* d = (unsigned char*) dst;
const unsigned char* s = (const unsigned char*) src;
for (uint32_t i = 0; i < size; i++)
d[i] = s[i];
return dst;
}
void* memmove(void* dst, const void* src, uint32_t size) {
unsigned char* d = (unsigned char*) dst;
const unsigned char* s = (const unsigned char*) src;
if (d < s)
for (uint32_t i = 0; i < size; i++)
d[i] = s[i];
else
for (uint32_t i = size; i--; )
d[i-1] = s[i-1];
return dst;
}
void* memset(void* ptr, int val, uint32_t size) {
unsigned char* buf = (unsigned char*) ptr;
unsigned char value = (unsigned char ) val;
for (uint32_t i = 0; i < size; i++)
buf[i] = value;
return ptr;
}

View File

@@ -1,6 +1,6 @@
#include <lib/stdint.h>
int memcmp(const void* a, const void* b, uint32_t sze);
void* memcpy(const void* dst, const void* src, uint32_t sze);
void* memmove(void* dst, const void* src, uint32_t sze);
void* memset(void* ptr, int val, uint32_t sze);
bool memcmp(const void* a, const void* b, uint32_t size);
void* memcpy(void* dst, const void* src, uint32_t size);
void* memmove(void* dst, const void* src, uint32_t size);
void* memset(void* ptr, int val, uint32_t size);