1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#include <u.h>
#include <libc.h>
void*
memcopy(void *dst, void *src, intptr n)
{
byte *e, *s, *d;
d = dst;
e = d + n;
for (s = src ; d != e; ++s, ++d) {
*d = *s;
}
return dst;
}
void*
memmove(void *dst, void *src, intptr n)
{
byte *e, *s, *d;
s = src;
d = dst;
if (d < s) {
e = d + n;
for (; d != e; ++s, ++d)
*d = *s;
} else {
e = d;
d += n;
s += n;
for (; d != e; --s, --d)
d[-1] = s[-1];
}
return dst;
}
void*
memset(void *buf, int val, intptr n)
{
byte *b, *e;
b = buf;
e = b + n;
for (; b != e; b++) {
*b = (byte)val;
}
return buf;
}
int
memcmp(void *lhs, void *rhs, intptr n)
{
byte *bl, *br, *e;
br = rhs;
e = br + n;
for (bl = lhs; br != e; ++bl, ++br) {
if (*bl < *br)
return -1;
else if (*bl > *br)
return 1;
}
return 0;
}
int
strlen(byte* s)
{
byte* b;
for (b = s; *b; b++) {
;
}
return b - s;
}
|