#include "rt_string.h" int rt_memcmp(const void* s1, const void* s2, rt_size_t n) { const unsigned char *p1 = s1, *p2 = s2; for (rt_size_t i = 0; i < n; ++i) { if (p1[i] != p2[i]) return p1[i] - p2[i]; } return 0; } int rt_strcmp(const char* s1, const char* s2) { while (*s1 && *s2 && (*s1 == *s2)) { s1++; s2++; } return *(const unsigned char*)s1 - *(const unsigned char*)s2; } void* rt_memcpy(void* restrict dest, const void* restrict src, rt_size_t n) { u8_t* d = dest; const u8_t* s = src; for (rt_size_t i = 0; i < n; ++i) d[i] = s[i]; return dest; } void* rt_memset(void* s, int c, rt_size_t n) { u8_t* p = s; for (rt_size_t i = 0; i < n; ++i) p[i] = (u8_t)c; return s; } rt_size_t rt_strlen(const char* s) { const char* p = s; while (*p) p++; return p - s; } /* strhash - 字符串哈希(用于符号表) */ u32_t rt_strhash(const char* s) { u32_t hash = 2166136261u; // FNV-1a偏移基础值 while (*s) { hash ^= *s++; hash *= 16777619u; } return hash; }