new: memcmp函数

This commit is contained in:
longjin 2022-10-20 20:50:50 +08:00
parent b6a77da0c9
commit c2fa7bf46d

View File

@ -51,3 +51,28 @@ long strncpy_from_user(char *dst, const char *src, unsigned long size);
* @return long
*/
long strnlen_user(const char *src, unsigned long maxlen);
/**
* @brief s1s2的第一个不相等的字节i处的差值s1[i]-s2[i])
* 0
*
* @param s1 1
* @param s2 2
* @param len
* @return int s1s2的第一个不相等的字节i处的差值s1[i]-s2[i])0
*/
static inline int memcmp(const void *s1, const void *s2, size_t len)
{
int diff;
asm("cld \n\t" // 复位DF确保s1、s2指针是自增的
"repz; cmpsb\n\t" CC_SET(nz)
: CC_OUT(nz)(diff), "+D"(s1), "+S"(s2)
: "c"(len)
: "memory");
if (diff)
diff = *(const unsigned char *)(s1 - 1) - *(const unsigned char *)(s2 - 1);
return diff;
}