flbase.c

来自「M-System DOC(Disk on a Chip) Flash芯片映像读写」· C语言 代码 · 共 105 行

C
105
字号
/***********************************************************************************/
/*                        M-Systems Confidential                                   */
/*           Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2003            */
/*                         All Rights Reserved                                     */
/***********************************************************************************/
/*                            NOTICE OF M-SYSTEMS OEM                              */
/*                           SOFTWARE LICENSE AGREEMENT                            */
/*                                                                                 */
/*      THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE                 */
/*      AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT           */
/*      FOR THE SPECIFIC TERMS AND CONDITIONS OF USE,                              */
/*      OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE:                               */
/*      E-MAIL = info@m-sys.com                                                    */
/***********************************************************************************/

/*
 * $Log:   V:/PVCSDB/DiskOnChip/archives/general storage/TrueFFS/src/core/flbase.c-arc  $
 * 
 *    Rev 1.0   Apr 09 2003 12:16:04   OriS
 * Initial revision.
 * 
 */

#include "flbase.h"

#ifdef FL_BIG_ENDIAN

/*----------------------------------------------------------------------*/
/*         Little / Big - Endian Conversion Routines			*/
/*----------------------------------------------------------------------*/

void toLEushort(FLByte FAR0 *le, FLWord n)
{
  le[1] = (FLByte)(n >> 8);
  le[0] = (FLByte)n;
}


FLWord fromLEushort(FLByte const FAR0 *le)
{
  return ((FLWord)le[1] << 8) + le[0];
}


void toLEulong(FLByte FAR0 *le, FLDword n)
{
  le[3] = (FLByte)(n >> 24);
  le[2] = (FLByte)(n >> 16);
  le[1] = (FLByte)(n >> 8);
  le[0] = (FLByte)n;
}

FLDword fromLEulong(FLByte const FAR0 *le)
{
  return ((FLDword)le[3] << 24) +
	 ((FLDword)le[2] << 16) +
	 ((FLDword)le[1] << 8) +
	 le[0];
}

extern void copyShort(FLByte FAR0 *to, FLByte const FAR0 *from)
{
  to[0] = from[0];
  to[1] = from[1];
}

extern void copyLong(FLByte FAR0 *to, FLByte const FAR0 *from)
{
  to[0] = from[0];
  to[1] = from[1];
  to[2] = from[2];
  to[3] = from[3];
}


#else

void toUNAL(FLByte FAR0 *unal, FLWord n)
{
  unal[1] = (FLByte)(n >> 8);
  unal[0] = (FLByte)n;
}


FLWord fromUNAL(FLByte const FAR0 *unal)
{
  return ((FLWord)unal[1] << 8) + unal[0];
}


void toUNALLONG(Unaligned FAR0 *unal, FLDword n)
{
  toUNAL(unal[0],(FLWord)n);
  toUNAL(unal[1],(FLWord)(n >> 16));
}


FLDword fromUNALLONG(Unaligned const FAR0 *unal)
{
  return fromUNAL(unal[0]) +
	 ((FLDword)fromUNAL(unal[1]) << 16);
}

#endif /* FL_BIG_ENDIAN */

⌨️ 快捷键说明

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