OSDN Git Service

デバッグ制御モジュール(トレースログ管理サブモジュール)追加
[mochi/master.git] / src / libraries / libc / string / memcpy.c
diff --git a/src/libraries/libc/string/memcpy.c b/src/libraries/libc/string/memcpy.c
new file mode 100644 (file)
index 0000000..b53ab2e
--- /dev/null
@@ -0,0 +1,44 @@
+/******************************************************************************/
+/* src/libraries/libc/string/memcpy.c                                         */
+/*                                                                 2017/03/09 */
+/* Copyright (C) 2017 Mochi.                                                  */
+/******************************************************************************/
+/******************************************************************************/
+/* インクルード                                                               */
+/******************************************************************************/
+#include <stdint.h>
+#include <string.h>
+
+
+/******************************************************************************/
+/* グローバル関数宣言                                                         */
+/******************************************************************************/
+/******************************************************************************/
+/**
+ * @brief       memcpy
+ * @details     標準Cライブラリのmemcpy関数。
+ * 
+ * @param[in]   *s1 コピー先
+ * @param[in]   *s2 コピー元
+ * @param[in]   n   コピーサイズ
+ * 
+ * @retval      コピー先アドレス
+ */
+/******************************************************************************/
+void *memcpy( void       *s1,
+              const void *s2,
+              size_t     n    )
+{
+    /* 1バイト毎に終端バイトから繰り返し */
+    while ( n > 0 ) {
+        /* コピー値代入 */
+        *( ( uint8_t * ) s1 + n ) = *( ( uint8_t * ) s2 + n );
+        
+        n--;
+    }
+    
+    return s1;
+}
+
+
+/******************************************************************************/