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 + -
显示快捷键?