memcopy

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