123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #pragma once
- #include <sys/types.h>
- #if defined(__cplusplus)
- extern "C" {
- #endif
- void *memset(void *dst, unsigned char C, uint64_t size);
- /**
- * @brief 获取字符串的大小
- *
- * @param s 字符串
- * @return size_t 大小
- */
- size_t strlen(const char *s);
- /*
- 比较字符串 FirstPart and SecondPart
- FirstPart = SecondPart => 0
- FirstPart > SecondPart => 1
- FirstPart < SecondPart => -1
- */
- int strcmp(const char *FirstPart, const char *SecondPart);
- /**
- * @brief 拷贝指定字节数的字符串
- *
- * @param dst 目标地址
- * @param src 源字符串
- * @param Count 字节数
- * @return char*
- */
- char *strncpy(char *dst, const char *src, size_t Count);
- /**
- * @brief 拷贝整个字符串
- *
- * @param dst 目标地址
- * @param src 源地址
- * @return char* 目标字符串
- */
- char* strcpy(char* dst, const char* src);
- /**
- * @brief 拼接两个字符串(将src接到dest末尾)
- *
- * @param dest 目标串
- * @param src 源串
- * @return char*
- */
- char *strcat(char *dest, const char *src);
- /**
- * @brief 内存拷贝函数
- *
- * @param dst 目标数组
- * @param src 源数组
- * @param Num 字节数
- * @return void*
- */
- 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;
- }
- #if defined(__cplusplus)
- } /* extern "C" */
- #endif
|