Implementing and optimizing memcpy operation.
void mem_copy(void *des, void *src, int len) {
char *char_des = des;
char *char_src = src;
while (len--) {
*char_des++ = *char_src++;
}
}
void mem_copy(void *des, void *src, int len) {
char *char_des, *char_src;
long *long_des, *long_src;
char_des = des;
char_src = src;
while ((unsigned long)char_des & (sizeof(unsigned long) - 1 != 0)) {
*char_des++ = *char_src++;
--len;
}
long_des = (long *)char_des;
long_src = (long *)char_src;
while (len >= sizeof(unsigned long)) {
*long_des++ = *long_src++;
len -= sizeof(unsigned long);
}
char_des = (char *)long_des;
char_src = (char *)long_src;
while (len--) {
*char_des++ = *char_src++;
}
}
Comments