memmove.c

来自「linux内核」· C语言 代码 · 共 35 行

C
35
字号
/* * memmove.c */#include <string.h>void *memmove(void *dst, const void *src, size_t n){  const char *p = src;  char *q = dst;#if defined(__i386__) || defined(__x86_64__)  if ( q < p ) {    asm volatile("cld ; rep ; movsb" : "+c" (n), "+S" (p), "+D" (q));  } else {    p += (n-1);    q += (n-1);    asm volatile("std ; rep ; movsb" : "+c" (n), "+S" (p), "+D" (q));  }#else  if ( q < p ) {    while ( n-- ) {      *q++ = *p++;    }  } else {    p += n;    q += n;    while ( n-- ) {      *--q = *--p;    }  }#endif  return dst;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?