kolibrios/programs/develop/cmm/struct.h

547 lines
11 KiB
C
Raw Normal View History

#include <stdio.h>
#include <sys/stat.h>
typedef struct _BIT_{
unsigned int siz:8;
unsigned int ofs:24;
}BIT;
struct _PROCINFO_
{
char *buf; //<2F><><EFBFBD><EFBFBD><EFBFBD><><E2A5AA><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD>
void *classteg; //<2F><><EFBFBD><EFBFBD><EFBFBD><>, <20><><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4><EFBFBD>
unsigned int warn:1;
unsigned int speed:1;
unsigned int lst:1;
unsigned int typestring:2;
unsigned int inlinest:1;
unsigned int code32:1;
unsigned int align:1;
unsigned int acycle:1;
unsigned int idasm:1;
unsigned int opnum:1;
unsigned int de:1;
unsigned int ostring:1;
unsigned int uselea:1;
unsigned int regoverstack:1;
unsigned int sizeacycle;
char chip;
};
struct idrec
{
union{
struct idrec *left;
struct localrec *next;
};
struct idrec *right; //<2F><EFBFBD><E0A5A4><EFBFBD><EFBFBD> <20><><E1ABA5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char recid[IDLENGTH]; //<2F><><EFBFBD>
unsigned int flag;
char *newid; //<2F><><EFBFBD><EFBFBD> <20> <20><><EFBFBD>묨, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><>,<2C><><EFBFBD> <20><><EFBFBD><EFBFBD><E6A5A4> <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD>
int rectok; //
int recrm; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD>
int recsegm;
int recpost;
int recsize;
int recsib;
int line; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
int file; //䠩<>
int count; //<2F><><EFBFBD><EFBFBD><20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD>
unsigned short type;
unsigned short npointr;
union{
char *sbuf; //㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E5AEA4><EFBFBD><EFBFBD><><E2A5AA><EFBFBD>
_PROCINFO_ *pinfo;
};
union{
long recnumber;
long long reclnumber;
double recdnumber;
float recfnumber;
};
};
struct localinfo
{
int usedfirst;
int usedlast;
int start;
int end;
int level;
int count;
};
struct localrec
{
/* struct localrec *next;
int localtok;
unsigned short type;
unsigned short npointr;
union{
unsigned int localnumber;
idrec *rec;
};
int locsize;
char localid[IDLENGTH];
unsigned char fuse; //䫠<> <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD>
unsigned char flag; //䫠<> static*/
idrec rec;
localinfo li;
unsigned char fuse; //䫠<> <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD>
};
#define INITBPPAR 1 //<2F><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BP <20><><20><><EFBFBD><E0A0AC>
#define INITBPLOC 2 //<2F><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BP <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INITBPENTER 4
#define INITBPADDESP 8
struct HEADLOC
{
int type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int ofs; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
unsigned int num; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
};
struct treelocalrec
{
treelocalrec *next;
localrec *lrec;
int initbp;
int level;
unsigned int addesp;
int endline;
};
typedef struct _ITOK_
{
int rm;
int segm;
int post;
int sib;
union{
long number;
long long lnumber;
double dnumber;
float fnumber;
};
union{
int size;
BIT bit;
};
unsigned short type;
unsigned short npointr;
union{
idrec *rec;
localrec *locrec;
};
char name[IDLENGTH];
unsigned int flag;
}ITOK;
struct elementteg
{
union{
void *nteg; //<2F><><EFBFBD><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
idrec *rec;
};
int tok;
union{
unsigned int numel; //<2F><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD> <>
BIT bit;
};
unsigned int ofs; //ᬥ饭<E1ACA5><E9A5AD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char name[IDLENGTH];
};
struct structteg
{
struct structteg *left; //᫥<><E1ABA5><EFBFBD>騩 ⥣
struct structteg *right; //᫥<><E1ABA5><EFBFBD>騩 ⥣
unsigned int size; //ࠧ<><E0A0A7><EFBFBD><>
unsigned int numoper; //<2F><><20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct elementteg *baza; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><E1A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⮢ ⥣<>
unsigned int flag;
char name[IDLENGTH];
};
struct listexport
{
long address;
char name[IDLENGTH];
};
typedef struct _IOFS_
{
unsigned int ofs;
unsigned int line; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
unsigned int file; //䠩<>
unsigned char dataseg;
}IOFS;
typedef struct _UNDEFOFF_
{
struct _UNDEFOFF_ *next;
IOFS *pos; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD>
int num; //<2F><><20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
char name[IDLENGTH];
}UNDEFOFF;
typedef struct _LISTCOM_
{
char name[IDLENGTH];
}LISTCOM;
typedef struct _SINFO_
{
char *bufstr;
int size;
}SINFO;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᯨ᪠ api-<2D><><EFBFBD><EFBFBD><E6A5A4>
typedef struct _APIPROC_
{
struct idrec *recapi;
}APIPROC;
//
typedef struct _DLLLIST_
{
struct _DLLLIST_ *next; //᫥<><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DLL
struct _APIPROC_ *list; //ᯨ᮪ <20><><EFBFBD><EFBFBD><E6A5A4>
unsigned short num; //<2F><><20><><EFBFBD><EFBFBD><E6A5A4>
char name[IDLENGTH]; //<2F><><EFBFBD> DLL
}DLLLIST;
typedef struct _PE_HEADER_
{
long sign; //ᨣ<><E1A8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><EFBFBD><E1A5A3> 'PE'
short cpu; //<2F><><EFBFBD> CPU - <20><EFBFBD><E1A5A3> 0x14C
short numobj; //<2F><><20><EFBFBD><E5AEA4> <20><><E2A0A1><EFBFBD><EFBFBD> <20><>ꥪ⮢
long date_time; //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>
long pCOFF;
long COFFsize;
short NTheadsize; //ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PE <20><> MAGIC - <20><EFBFBD><E1A5A3> 0xE0
short flags;
short Magic; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><E0A0AC>
short LinkVer; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long sizecode;
long sizeinitdata;
long sizeuninitdata;
long EntryRVA; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2ADAE><EFBFBD> IMAGE BASE <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>
long basecode; //RVA ᥪ<><E1A5AA><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD>
long basedata; //RVA ᥪ<><E1A5AA><EFBFBD>,ᮤ<><EFBFBD><E0A6A0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long ImageBase; //<2F><><EFBFBD><EFBFBD><EFBFBD><E3A0AB><EFBFBD><EFBFBD> <20><><EFBFBD><E7A0AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
long objAlig; //<2F><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD> ᥪ権
long fileAlig; //<2F><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᥪ権 <20><><E4A0A9>
long OSver; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
long userver;
long SubSysVer;
long rez;
long imagesize; //ࠧ<><E0A0A7><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E3A6A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>
long headsize; //ࠧ<> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> stub+PE+objtabl
long checksum;
short SubSys; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
short DLLflag;
long stackRezSize;
long stackComSize;
long heapRezSize;
long heapComSize;
long loaderFlag;
long numRVA; //<2F><EFBFBD><E1A5A3> 10
long exportRVA;
long exportSize;
long importRVA;
long importSize;
long resourRVA;
long resourSize;
long exceptRVA;
long exceptSize;
long securRVA;
long securSize;
long fixupRVA;
long fixupSize;
long debugRVA;
long debugSize;
long descripRVA;
long descripSize;
long machinRVA;
long machinSize;
long tlsRVA;
long tlsSize;
long loadConfRVA;
long loadConfSize;
long rez2[2];
long iatRVA;
long iatSize;
long rez3[6];
}PE_HEADER;
typedef struct _OBJECT_ENTRY_
{
char name[8];
long vsize;
long sectionRVA;
long psize;
long pOffset;
unsigned long PointerToRelocations;
unsigned long PointerToLinenumbers;
unsigned short NumberOfRelocations;
unsigned short NumberOfLinenumbers;
long flags;
}OBJECT_ENTRY;
typedef struct _EXPORT_TABLE_
{
unsigned long Flags;
unsigned long Time;
unsigned short Version[2];
unsigned long NameRVA;
unsigned long OriginalBase;
unsigned long NumFunc;
unsigned long NumName;
unsigned long AddressRVA;
unsigned long NamePRVA;
unsigned long OrdinalRVA;
}EXPORT_TABLE;
struct ftime {
unsigned ft_tsec:5; /* <20><><EFBFBD> ᥪ㭤<E1A5AA> */
unsigned ft_min:6; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
unsigned ft_hour:5; /* <20><><EFBFBD><EFBFBD> */
unsigned ft_day:5; /* <20><><EFBFBD><EFBFBD> */
unsigned ft_month:4; /* <20><><EFBFBD><EFBFBD><EFBFBD> */
unsigned ft_year:7; /* <20><><EFBFBD>-1980 */
};
typedef struct _STRING_LIST_
{
void *next; //᫥<><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int len; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
unsigned int ofs; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><E5AEA4><EFBFBD><><E4A0A9>
unsigned char type; // <20><><EFBFBD><E0ACA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char plase; //<2F><><EFBFBD><><E1A5A9><EFBFBD> <20><><EFBFBD> - post or data
}STRING_LIST;
struct FILEINFO
{
char *filename;
int numdline;
idrec *stlist;
union{
struct ftime time;
unsigned short lineidx[2];
};
};
struct EWAR{
FILE *file;
char *name;
};
typedef struct _ICOMP_
{
unsigned int type;
unsigned int loc;
unsigned int use_cxz;
}ICOMP;
typedef struct _RETLIST_
{
unsigned int line;
unsigned int loc;
unsigned int type;
// int use;
}RETLIST;
enum{
singlcase,startmulti,endmulti};
typedef struct _ISW_
{
unsigned char type;
unsigned int postcase;
unsigned long value;
}ISW;
struct postinfo
{
unsigned int loc;
unsigned int num;
unsigned short type;
unsigned short line;
unsigned short file;
};
typedef struct _EXE_DOS_HEADER_
{
unsigned short sign;
unsigned short numlastbyte;
unsigned short numpage;
unsigned short numreloc;
unsigned short headsize;
unsigned short minmem;
unsigned short maxmem;
unsigned short initSS;
unsigned short initSP;
unsigned short checksum;
unsigned short initIP;
unsigned short initCS;
unsigned short ofsreloc;
unsigned short overlay;
unsigned long fullsize;
}EXE_DOS_HEADER;
typedef struct _FSWI_
{
ISW *info;
int sizetab; //<2F><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int type; //ࠧ<><EFBFBD><EFA4AD><EFBFBD><EFBFBD>
int numcase; //<2F><><20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><E3A5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int defal; //<2F><><EFBFBD><EFBFBD><E7A5AD> <20><><><EFBFBD><E7A0AD>.
int ptb; //<2F><><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><><E2A0A1><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
int ptv; //<2F><><EFBFBD><EFBFBD><EFBFBD><><E2A0A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
int mode; // switch
int razr; //ࠧ<><EFBFBD><EFA4AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
}FSWI;
struct paraminfo
{
unsigned int ofspar;
unsigned char type[8];
};
struct MEOSheader
{
unsigned char sign[8];
unsigned long vers;
unsigned long start;
unsigned long size;
unsigned long alloc_mem;
unsigned long esp;
unsigned long I_Param;
unsigned long I_Icon;
};
#ifdef OPTVARCONST
struct LVIC{
idrec *rec;
// int blocks;
int typevar;
int contype; //<><EFBFBD><E0A6A8><EFBFBD><EFBFBD>
union{
long number;
long long lnumber;
double dnumber;
float fnumber;
};
};
struct BLVIC
{
int sizevic;
LVIC *listvic;
};
#endif
#define SIZEIDREG 256
#define NOINREG 8
#define SKIPREG 9
struct REGEQVAR
{
REGEQVAR *next;
char name[IDLENGTH];
unsigned char razr;
};
struct REGISTERSTAT
{
union{
REGEQVAR *next;
#ifdef OPTVARCONST
BLVIC *bakvic;
#endif
};
union{
char id[SIZEIDREG];
void *stringpar;
unsigned long number;
};
unsigned char type;
unsigned char razr;
};
struct SAVEREG
{
unsigned int size; //ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A5A3><EFBFBD>
unsigned char all; //<2F><><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD>
unsigned char reg[8]; //<2F><><EFBFBD><EFBFBD><EFBFBD><><E0A5A3><EFBFBD>
};
struct SAVEPAR
{
unsigned char ooptimizespeed;
unsigned char owarning;
unsigned char odbg;
unsigned char odosstring;
unsigned char ouseinline;
unsigned char oam32; // <><E0A5A6> 32 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char oalignword;
unsigned char oAlignCycle; //<2F><><EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E6A8AA><EFBFBD>
unsigned char oidasm; //<2F><><EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4A8AA><EFBFBD><EFBFBD>
int ooptnumber;
int odivexpand;
unsigned char ooptstr; //<2F><><EFBFBD><E2A8AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0AEAA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
unsigned char ochip;
int oaligncycle;
unsigned char ouselea;
unsigned char oregoverstack;
};
struct COM_MOD
{
COM_MOD *next;
unsigned char *input; /* dynamic input buffer */
unsigned int endinptr; /* end index of input array */
unsigned int inptr; /* index in input buffer */
unsigned int inptr2; /* index in input buffer */
unsigned int linenumber;
unsigned int currentfileinfo;
int numparamdef; //<2F><><20><><EFBFBD><E0A0AC><20><>饬 define
char *declareparamdef; //ᯨ᮪ <20><><EFBFBD><EFBFBD><EFA2AB><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC>஢ define
char *paramdef; //ᯨ᮪ <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC>
int freze; //䫠<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A5AD><><E3A4A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
struct LISTRELOC {
unsigned int val;
};
struct LISTFLOAT
{
union{
float fnum;
double dnum;
unsigned long num[2];
};
int type;
unsigned int ofs;
};
struct LILV
{
unsigned int ofs;
int size;
localrec *rec;
};
struct WARNACT
{
void (*fwarn)(char *str,unsigned int line,unsigned int file);
unsigned char usewarn;
};