12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- void *memset(void *dst, unsigned char C, uint64_t size);
- size_t strlen(const char *s);
- int strcmp(const char *FirstPart, const char *SecondPart);
- char *strncpy(char *dst, const char *src, size_t Count);
- char* strcpy(char* dst, const char* src);
- char *strcat(char *dest, const char *src);
- static void *memcpy(void *dst, const void *src, long Num)
- {
- int d0 = 0, d1 = 0, d2 = 0;
- __asm__ __volatile__("cld \n\t"
- "rep \n\t"
- "movsq \n\t"
- "testb $4,%b4 \n\t"
- "je 1f \n\t"
- "movsl \n\t"
- "1:\ttestb $2,%b4 \n\t"
- "je 2f \n\t"
- "movsw \n\t"
- "2:\ttestb $1,%b4 \n\t"
- "je 3f \n\t"
- "movsb \n\t"
- "3: \n\t"
- : "=&c"(d0), "=&D"(d1), "=&S"(d2)
- : "0"(Num / 8), "q"(Num), "1"(dst), "2"(src)
- : "memory");
- return dst;
- }
|