forked from KolibriOS/kolibrios
547 lines
11 KiB
C
547 lines
11 KiB
C
|
#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;
|
|||
|
};
|