📄 bom.h
字号:
#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 + -