DSP/BIOS中的數據類型

DSP/BIOS API並非像C語言一樣直接採用如int或char的數據類型。然而,爲了保證與其他處理器的DSP/BIOS API兼容性,DSP/BIOS定義了自己的標準數據類型。下述數據類型在std.h頭文件中定義,它們在DSP/BIOS API中被採用。當然還有其他數據類型也在這個頭文件中定義,但是並沒有被DSP/BIOS API採用。

類型         描述

Arg          同時能處理Prt和Int參數類型的類型Type capable of holding both Ptr and Int arguments

Bool 布爾類型(和C類似,包括TRUE和FALSE)Boolean value

Char 字符類型Character value

Int           帶符號的整型數Signed integer value

LgInt 大的帶符號的整型數Large signed integer value

LgUns   大的不帶符號的整型數 Large unsigned integer value

Ptr          一般指針類型Generic pointer value

String 字符串類型Zero-terminated (\0) sequence (array) of characters

Uns        無符號整型數Unsigned integer value

Void        空類型Empty type

 

下面是兩個處理Arg類型的兩個函數(所有DSP平臺都適用)

ArgToInt(arg)  Arg轉爲Int 

ArgToPtr(arg) Arg轉爲Ptr

 

------------------轉--------------------

DSP/BIOS中的匈牙利記法爲:
  Sm開頭的表示8-bit類型;
  Md開頭的表示16-bit類型;
  Lg開頭的表示32-bit類型;
  Int表示有符號整型;
  Uns表示無符號類型;
  Bits表示按bit計算類型;

我的建議:在定義上述類型的變量時,相應的變量名用上面的開頭表示;或者養成以下習慣(我的習慣),僅供參考:
  定義字符變量用cH開頭:如,char cHdiag;
  定義整型變量用iN開頭:如,int iNaddnum;
  定義無符號整型變量用uiN開頭。
  定義符號字符變量用ucH開頭。
  定義長整型變量用lO開頭。等等。
  開始使用時可能有點彆扭,但時間一長,一旦成爲習慣,就會受益匪淺

在std.h等文件中定義了一些常量和數據類型(原文引用),如下:

typedef char SmInt;
typedef short MdInt;
#if defined(_6x_)
typedef int LgInt;
#else
typedef long LgInt;
#endif

typedef unsigned char SmUns;
typedef unsigned short MdUns;
#if defined(_6x_)
typedef unsigned LgUns;
#else
typedef unsigned long LgUns;
#endif

typedef unsigned char SmBits;
typedef unsigned short MdBits;
#if defined(_6x_)
typedef unsigned LgBits;
#else typedef unsigned long LgBits;
#endif


typedef int Int;
typedef long int Long;
typedef short int Short;
typedef char Char;
#define Void voidtypedef char * String;

#if defined(_29_) || defined(_50_) || defined(_54_) || defined(_55_) || defined(_6x_)
typedef unsigned Uns;
#else
typedef unsigned long Uns;
#endif

#if defined(_80_)
typedef int Bool;
#elif defined(_W32_)
typedef long Bool;
#else
typedef MdUns Bool;
#endif

typedef SmBits Byte;
typedef void *Ptr;

typedef Int (*Fxn)();

#if defined(_80_) || defined(_SUN_) || defined(_67_)
typedef float Float;
#else
typedef double Float; #endif

#ifndef NULL
#define NULL 0
#endif

#ifndef TRUE
#define FALSE ((Bool)0)
#define TRUE ((Bool)1)
#endif

#ifdef _LINT_
#define __inline
#else
#define __inline inline
#endif
#endif

#if !defined(inline) && !defined(__cplusplus) && !defined(_TI_)
#define inline __inline
#endif

  
本文引用TI的std.h文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章