//////////////////////////////////////////////////////////// //~ Crtlib mem op stubs #if !IsCrtlibEnabled //- memcpy __attribute((section(".text.memcpy"))) void *memcpy(void *__restrict dst, const void *__restrict src, u64 count) { char *dst_pchar = dst; char *src_pchar = src; for (u64 i = 0; i < count; ++i) { dst_pchar[i] = src_pchar[i]; } return dst; } //- memset __attribute((section(".text.memset"))) void *memset(void *dst, i32 c, u64 count) { char *dst_pchar = dst; for (u64 i = 0; i < count; ++i) { dst_pchar[i] = (char)c; } return dst; } //- memcmp __attribute((section(".text.memcmp"))) i32 memcmp(const void *p1, const void *p2, u64 count) { i32 result = 0; char *p1_pchar = p1; char *p2_pchar = p2; for (u64 i = 0; i < count; ++i) { result = p1_pchar[i] - p2_pchar[i]; if (result != 0) { break; } } return result; } #endif /* !IsCrtlibEnabled */