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

📄 bom.h

📁 为keil c51编写自己display接口
💻 H
📖 第 1 页 / 共 5 页
字号:
#ifndef _BOM_H_INCLUDED_
  #define _BOM_H_INCLUDED_ 


#include <sys\types.h>        // wg. 'struct _stat'
#include <sys\stat.h>
#include <Windows.h>          // wg. HANDLE
#include <stdio.h>

#include "ComTyp.h"


#define iMCS51   0            // ToolSet Definitions
#define iMCS251  1
#define iMCS166  2
#define iMCSFOX  3


/*
 * Common Sim/Target Stuff
 */

#ifdef __cplusplus
  extern "C"  {
#endif


#define EXPRT __declspec(dllexport)


extern void   StopDDE (void);
extern void   SendDDE (BYTE *pS, BYTE CmdTyp, int nLen);
extern void   InitDDE (HANDLE hInst);




/*
 * Find in Files structure
 */

struct FiF  {
  BYTE        bFind;          // Find active flag.
  BYTE        bStop;          // stop thread flag.
  HWND       m_hWnd;          // MainFrame's hwnd.
  HANDLE        hTh;          // thread handle.
//HANDLE     hEvent;

  BYTE       SubDir;
  BYTE       RegExp;
  BYTE        mCase;
  BYTE       mhWord;

  char       What [300];
  char       Type [300];
  char       Fold [MAX_PATH + 10];
};

extern void FindinFiles (struct FiF *pF);




//--- Types

#define  ACONST    0x01
#define  AVOLAT    0x02

#define  bt_void      0
#define  bt_bit       1
#define  bt_char      2
#define  bt_uchar     3
#define  bt_int       4
#define  bt_uint      5
#define  bt_short     6
#define  bt_ushort    7
#define  bt_long      8
#define  bt_ulong     9
#define  bt_float    10
#define  bt_double   11
#define  bt_ptr      12
#define  bt_union    13
#define  bt_struct   14
#define  bt_func     15
#define  bt_string   16
#define  bt_enum     17
#define  bt_field    18
#define  bt_int64    19
#define  bt_uint64   20



/*
 * Storage class specifiers
 */

#define  sc_strsym    0
#define  sc_static    1
#define  sc_auto      2
#define  sc_regi      3
#define  sc_global    4
#define  sc_extern    5
#define  sc_type      6
#define  sc_const     7
#define  sc_member    8
#define  sc_label     9
#define  sc_ulabel   10
#define  sc_parm     11
#define  sc_sfr      12
#define  sc_abit     13
#define  sc_tag      14
#define  sc_bind     15


/*
 * Expression - Node types
 */

#define  x_const     1    /* some constant */
#define  e_strcon    2    /* string object */
#define  e_labcon    3    /* static object */
#define  e_autcon    4    /* local object  */
#define  e_namcon    5    /* dScope function reference */
#define  e_simvar    6    /* dScope predefined name */
#define  e_regid     7    /* some Register name */
#define  e_vtreg     8    /* some vtreg */
#define  e_usrcon    9    /* namcon of user program */
#define  e_vcon      10   /* namcon of a vSym */

#define  e_ref       11   /* some reference */
#define  e_reff      12   /* bit-field-reference */
#define  e_cast      13   /* some cast */
#define  e_postinc   14   /* ++ (postfix !) */
#define  e_postdec   15   /* -- (postfix !) */
#define  e_addr      16   /* & (addr_of) */
#define  e_cont      17   /* * (content_of) */
#define  e_plus      18   /* unary + */
#define  e_minu      19   /* unary - */
#define  e_not       20   /* ! (not) */
#define  e_compl     21   /* ~ (complement) */
#define  e_asn       22   /* = (assign to) */
#define  e_asnor     23   /* |= */
#define  e_asnxor    24   /* ^= */
#define  e_asnand    25   /* &= */
#define  e_asnlsh    26   /* <<= */
#define  e_asnrsh    27   /* >>= */
#define  e_asnadd    28   /* += */
#define  e_asnsub    29   /* -= */
#define  e_asnmul    30   /* *= */
#define  e_asndiv    31   /* /= */
#define  e_asnmod    32   /* %= */
#define  e_hook      33   /* e0 ? e1 : e2 */
#define  e_land      34   /* && */
#define  e_lor       35   /* || */
#define  e_and       36   /* & (bit-and) */
#define  e_or        37   /* | (bit-or) */
#define  e_xor       38   /* ^ (bit-xor) */
#define  e_equ       39   /* == */
#define  e_nequ      40   /* != */
#define  e_lequ      41   /* <= */
#define  e_gequ      42   /* >= */
#define  e_gt        43   /* >  */
#define  e_lt        44   /* <  */
#define  e_lsh       45   /* << */
#define  e_rsh       46   /* >> */
#define  e_add       47   /* +  */
#define  e_sub       48   /* -  */
#define  e_mod       49   /* %  */
#define  e_div       50   /* /  */
#define  e_mul       51   /* *  */
#define  e_preinc    52   /* ++ (prefix !) */
#define  e_predec    53   /* -- (prefix !) */
#define  e_indx      54   /* [] */

#define  e_comma     55   /* expr, expr */
#define  e_param     56   /* actual parameter */
#define  e_void      57   /* void-node */
#define  e_fcall     58   /* direct function call */
#define  e_size      59   /* sizeof (expr) */
#define  e_move      60   /* some memcpy */
#define  e_struid    61   /* 'struct -> id' or 'struct.id' */
#define  e_lea       62   /* load effective address */
#define  e_exec      63   /* exec ("command") */



//--- Symbol-Handling

union amap {
  DWORD     a32;
  WORD16    w16;
  BYTE    ub[4];
};
#define AMAP   union amap



#pragma pack(1)

struct ytp  {                 /* decl.-specifiers Eimer */
  BYTE            base;       /* Basic-Type */
  BYTE        sign : 3;       /* 1=Signed, 2=Unsigned */
  BYTE        regi : 1;       /* register */
  BYTE        cvol : 4;       /* 1=const, 2=volatile */
  BYTE         err : 1;
  BYTE    tblocked : 1;       /* block other types, typedef type given */
  BYTE          Xclass;
};


/*
 * mode-0: default mode
 * mode-1: Typedef mode
 * mode-2: Structure member mode
 * mode-3: Alien Mode
 * mode-4: ANSI-Parameter mode
 */

struct clxs  {
  BYTE       mode;    // declarator Mode
  BYTE     sclass;    // Storage class
  BYTE     dclspc;    // dcl-specifiers given flag
  BYTE     cgiven;    // class given explictly
};


/*
 * mSpaces (F66, 166/167)
 */

#define  xNEAR        1
#define  xFAR         2
#define  xHUGE        3
#define  xXHUGE       4

#define  mDATA        1         // fox _near
#define  mIDATA       2         // fox _idata
#define  mPDATA       3         // fox _shuge
#define  mXDATA       4         // fox _sdata
#define  mBDATA       5         // fox _bdata
#define  mECODE       6         // fox code-space


/*
 * nfh:   0 := ndata-ptr (16-Bit, page2:pof14)
 *        1 := far-ptr   (32-Bit, seg16:sof16)
 *        2 := huge-ptr  (32-Bit, linear)
 *        3 := xhuge-ptr (32-Bit, linear)
 */

struct typ  {                   /* Structure for a Type */
  BYTE              type;       /* bt_??? */
  DWORD             size;       /* Size of Item described */

  DWORD       v_flag : 1;       /* 1 on Array | Struct | Func */
  DWORD          vpf : 1;       /* voidpointer */
  DWORD         duse : 2;       /* 1=const, 2=volatile, 3=both */
  DWORD          nfh : 4;       /* 1:=near, 2:=far, 3:=huge, 7=short */
  DWORD          tps : 1;       // ptr-to-char for 'e_strcon'
  DWORD        iduse : 2;
//DWORD        pduse : 2;
  DWORD        parmb : 2;       /* 1=f(void), 2=f(), 3=f(p,...)' */
//DWORD           kr : 1;       /* Function: K&R-style */
  DWORD        tType : 1;       /* a Typedef-Type ! */
  DWORD        zTemp : 1;
  DWORD       SpcSpc : 1;       /* explicite spaced pointer */
  DWORD       eSpace : 1;       /* explicite mSpace given to spaced-ptr */

  BYTE             space;       /* mspace on pointers */
  BYTE            tspace;       /* typedef'd Space ! */
  BYTE             parms;       /* Function: Nr. of Parameters */

  struct typ        *btp;       /* type-Link */
  struct sym       *head;       /* subtable struct/union/func */
  char            *sname;       /* ptr to type-Name */
};
#define TYP   struct typ



#if 0
/*
 * OMF66 Type descriptors
 */

struct t2_x21  {                /* 0x21: Pointer descriptor */
  BYTE        nTyp;             /* 0x21 */
  TYP          *tp;

  BYTE        Size;             /* pointer size: 16 or 32  */
  BYTE      Attrib;
  WORD16  reserved;             /* unused, set to zero     */
  WORD16        TI;             /* Type-Index of refererred type */
};

struct t2_x22  {                /* 0x22: Array descriptor */
  BYTE        nTyp;             /* 0x22 */
  TYP          *tp;

  BYTE       nDims;             /* number of dimensions */
  BYTE      Attrib;             /* Bit-0: huge-array, Bit-1: xhuge-array */
  WORD16        TI;             /* Index of Array-Type */
  DWORD  DimSz [1];             /* actually 'nDims' values */
};

struct t2_x29  {                /* 0x29: Fox-Struct/union descriptor */
  BYTE        nTyp;             /* 0x29 */
  TYP          *tp;

  BYTE      Attrib;             /* 1:=struct, 2:=union */
  DWORD       Size;             /* struct/union size */
  WORD16        TI;             /* Type-Index of component list */
  BYTE        nLen;             /* NameLen */
  BYTE     name[1];             /* actually 'nLen' characters */
};

struct t2_x23  {                /* 0x23: Function descriptor */
  BYTE        nTyp;             /* 0x23 */
  TYP          *tp;

  BYTE      Attrib;             /* 1:=near Function, 2:=far Function */
  WORD16       rTI;             /* Return-Type Index */
  WORD16       pTI;             /* Parameter-List Index (Component List) */
};

struct t2_x25  {                /* 0x25: Bitfield descriptor */
  BYTE        nTyp;             /* 0x25 */
  TYP          *tp;

  WORD16        TI;             /* type of underlying object */
  BYTE      Offset;             /* Field-Offset in bits */
  BYTE       Width;             /* Field-Width in bits  */
};

struct t2_x26  {                /* 0x26: Typedef descriptor */
  BYTE        nTyp;
  TYP          *tp;

  WORD16        TI;             /* Type index */
  BYTE       Attr8;             /* unused */
  DWORD      Res32;             /* unused */
  BYTE        nLen;             /* NameLen */
  BYTE     name[1];             /* actually 'nLen' characters */
};

struct t2_x27  {                /* 0x27: Component */
  BYTE        nTyp;
  TYP          *tp;

  WORD16        TI;             /* component's type */
  DWORD     Offset;             /* component's offset */
  BYTE        Rep8;             /* unused */
  BYTE        Pos8;             /* unused */
  BYTE        nLen;             /* NameLen */
  BYTE     name[1];             /* actually 'nLen' characters */
};

struct t2_x28  {                /* 0x28: Component-List */
  BYTE        nTyp;
  TYP          *tp;

  DWORD     nComps;             /* Nr. of Components (word->dword by loader) */
  WORD16   nArr[1];             /* 'nComps' entries */
};

union flv {
  DWORD          sizz;      /* Typ muss gleich wie typ.size sein ! */

⌨️ 快捷键说明

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