C2A_Core
endian.c
[詳解]
1 
5 #pragma section REPRO
6 #include "endian.h"
8 #include <stdint.h>
9 #include <string.h>
10 
11 void* ENDIAN_memcpy(void* dest, const void* src, size_t size)
12 {
13 #ifdef IS_LITTLE_ENDIAN
14  // 内部でcopyと同等のことを行っている
15  ENDIAN_conv(dest, src, size);
16 #else
17  memcpy(dest, src, size);
18 #endif
19 
20  return dest;
21 }
22 
23 void ENDIAN_conv(void* after, const void* before, size_t size)
24 {
25  const uint8_t* bef = (const uint8_t*)before;
26  uint8_t* aft = (uint8_t*)after;
27  size_t i;
28 
29  if (size < 0) return;
30 
31  size--;
32  for (i = 0; i <= size; i++)
33  {
34  *(aft + (size - i)) = *(bef + i);
35  }
36 
37  return;
38 }
39 
40 #pragma section
void ENDIAN_conv(void *after, const void *before, size_t size)
エンディアンの変更
Definition: endian.c:23
void * ENDIAN_memcpy(void *dest, const void *src, size_t size)
エンディアンを考慮した memcpy
Definition: endian.c:11
エンディアンに関するものを定義する
C89 環境用 stdint.h