File size: 1,024 Bytes
e95a646
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "runtime.h"
void *memcpy(void *destination,const void *source,size_t size) {
  volatile unsigned char *d=destination;const volatile unsigned char *s=source;
  for(size_t i=0;i<size;i++)d[i]=s[i];return destination;
}
void *memset(void *destination,int value,size_t size) {
  volatile unsigned char *d=destination;for(size_t i=0;i<size;i++)d[i]=(unsigned char)value;
  return destination;
}
void *memchr(const void *source,int value,size_t size) {
  const unsigned char *s=source;for(size_t i=0;i<size;i++)if(s[i]==(unsigned char)value)return (void *)(s+i);
  return NULL;
}
int memcmp(const void *left,const void *right,size_t size) {
  const unsigned char *a=left,*b=right;
  for(size_t i=0;i<size;i++)if(a[i]!=b[i])return (int)a[i]-(int)b[i];return 0;
}
int strcmp(const char *left,const char *right) {
  const unsigned char *a=(const unsigned char *)left,*b=(const unsigned char *)right;
  while(*a && *a==*b){a++;b++;}return (int)*a-(int)*b;
}
size_t strlen(const char *s) {size_t n=0;while(s[n])n++;return n;}