⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ml_mem.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
  #endif

  return (p);
} /* END OF FUNCTION */

#endif /* ... XMK_USE_memset */


#ifdef XMK_USE_memcpy

/*+FHDR E*/
/*
+------------------------------------------------------------------------------+
|  Functionname : memcpy                                                       |
|  Author       : S&P Media GmbH Germany                                       |
+------------------------------------------------------------------------------+
|                                                                              |
|  Description  :                                                              |
|  This function is a template for the memcpy () implementation.               |
|                                                                              |
|  CAUTION :                                                                   |
|  -------------                                                               |
|  Take care in the case of using preemption !                                 |
|                                                                              |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/

/*+FDEF E*/

#ifndef XNOPROTO
  void * XMK_memcpy_NAME ( void * dest, const void * source, size_t length )
#else
  void * XMK_memcpy_NAME ( dest, source, length)
  void *       dest;
  const void * source;
  size_t       length;
#endif

/*-FDEF E*/

{
  char *d;
  char *s;
  
  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_FUNCTION("memcpy");
  #endif

  d = (char *) dest;
  s = (char *) source ;
  
  while (length --)
  {
    *d =  *s;
    d++; s++;
  };

  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_TRACE_EXIT("memcpy");
  #endif

  return (dest);
} /* END OF FUNCTION */

#endif /* ... XMK_USE_memcpy */

#ifdef XMK_USE_strlen

/*+FHDR E*/
/*
+------------------------------------------------------------------------------+
|  Functionname : strlen                                                       |
|  Author       : S&P Media GmbH Germany                                       |
+------------------------------------------------------------------------------+
|                                                                              |
|  Description  :                                                              |
|  This function is a template for the strlen () implementation.               |
|                                                                              |
|  CAUTION :                                                                   |
|  -------------                                                               |
|  Take care in the case of using preemption !                                 |
|                                                                              |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/

/*+FDEF E*/

#ifndef XNOPROTO
  size_t  XMK_strlen_NAME ( const char * p )
#else
  size_t  XMK_strlen_NAME ( p )
  const char * p;
#endif

/*-FDEF E*/

{
  int cnt = 0;

  /*#ifdef XMK_ADD_PRINTF_MEMORY
    XMK_FUNCTION("strlen");
  #endif
  */
  while (*p)
  {
    cnt ++;
    p++;
  };

  /*
  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_TRACE_EXIT("strlen");
  #endif
  */

  return (cnt);

} /* END OF FUNCTION */

#endif /* ... XMK_USE_strlen */

#ifdef XMK_USE_strcpy

/*+FHDR E*/
/*
+------------------------------------------------------------------------------+
|  Functionname : strcpy                                                       |
|  Author       : S&P Media GmbH Germany                                       |
+------------------------------------------------------------------------------+
|                                                                              |
|  Description  :                                                              |
|  This function is a template for the strcpy () implementation.               |
|                                                                              |
|  CAUTION :                                                                   |
|  -------------                                                               |
|  Take care in the case of using preemption !                                 |
|                                                                              |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/

/*+FDEF E*/

#ifndef XNOPROTO
  char * XMK_strcpy_NAME ( char * pdest, const char * psource )
#else
  char * XMK_strcpy_NAME ( pdest, psource )
  char * pdest;
  const char * psource;
#endif

/*-FDEF E*/

{
  char * p_return;

  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_FUNCTION("strcpy");
  #endif

  p_return = pdest;
  while (*psource)
  {
    *pdest  = *psource;
    pdest   ++ ;
    psource ++ ;
  };

  *pdest ='\0';

  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_TRACE_EXIT("strcpy");
  #endif

  return (p_return);

} /* END OF FUNCTION */

#endif /* ... XMK_USE_strcpy */

#ifdef XMK_USE_strncpy

/*+FHDR E*/
/*
+------------------------------------------------------------------------------+
|  Functionname : strncpy                                                      |
|  Author       : S&P Media GmbH Germany                                       |
+------------------------------------------------------------------------------+
|                                                                              |
|  Description  :                                                              |
|  This function is a template for the strncpy () implementation.              |
|                                                                              |
|  CAUTION :                                                                   |
|  -------------                                                               |
|  Take care in the case of using preemption !                                 |
|                                                                              |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/

/*+FDEF E*/

#ifndef XNOPROTO
  char * XMK_strncpy_NAME ( char * pdest, const char * psource, size_t length )
#else
  char * XMK_strncpy_NAME ( pdest, psource, length )
  char * pdest;
  const char * psource;
  size_t length;
#endif

/*-FDEF E*/

{

  char *s = pdest;
  register char c;

  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_FUNCTION("strncpy");
  #endif

  --pdest;

  if (length >= 4)
  {
    size_t length4 = length >> 2;

    for (;;)
    {
      c = *psource++;
      *++pdest = c;
      if (c == '\0')
        break;

      c = *psource++;
      *++pdest = c;
      if (c == '\0')
        break;

      c = *psource++;
      *++pdest = c;
      if (c == '\0')
        break;

      c = *psource++;
      *++pdest = c;
      if (c == '\0')
        break;

      if (--length4 == 0)
        goto last_chars;
    }
    length = length - (pdest - s) - 1;
    if (length == 0)
      return s;
    goto zero_fill;
  }

last_chars:
  length &= 3;
  if (length == 0)
    return s;

  do
  {
    c = *psource++;
    *++pdest = c;
    if (--length == 0)
      return s;
  }
  while (c != '\0');

zero_fill:
  do
    *++pdest = '\0';
  while (--length > 0);

  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_TRACE_EXIT("strncpy");
  #endif

  return s;

} /* END OF FUNCTION */

#endif /* ... XMK_USE_strncpy */

#ifdef XMK_USE_strcmp

/*+FHDR E*/
/*
+------------------------------------------------------------------------------+
|  Functionname : strcmp                                                       |
|  Author       : S&P Media GmbH Germany                                       |
+------------------------------------------------------------------------------+
|                                                                              |
|  Description  :                                                              |
|  This function is a template for the strcmp () implementation.               |
|                                                                              |
|  CAUTION :                                                                   |
|  -------------                                                               |
|  Take care in the case of using preemption !                                 |
|                                                                              |
+------------------------------------------------------------------------------+
*/
/*-FHDR E*/

/*+FDEF E*/

#ifndef XNOPROTO
  int XMK_strcmp_NAME (const char * p1, const char * p2)
#else
  int XMK_strcmp_NAME (p1, p2)
  const char * p1;
  const char * p2;
#endif

/*-FDEF E*/

{

  unsigned char c1, c2;

  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_FUNCTION("strcmp");
  #endif

  do
  {
    c1 = (unsigned char) *p1++;
    c2 = (unsigned char) *p2++;
    if (c1 == '\0')  return (c1 - c2);

  }
  while (c1 == c2);

  #ifdef XMK_ADD_PRINTF_MEMORY
    XMK_TRACE_EXIT("strcmp");
  #endif

  return (c1 - c2);

} /* END OF FUNCTION */

#endif /* ... XMK_USE_strcmp */

#endif /* __ML_MEM_C_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -