#include <stdio.h> #include <sys/stat.h> typedef struct _BIT_{ unsigned int siz:8; unsigned int ofs:24; }BIT; struct _PROCINFO_ { char *buf; // ¤à¥á ⥪áâ ¯à®æ¥¤ãàë void *classteg; // ¤à¥á ⥣ , £¤¥ ®¯à¥¤¥«¥ ¯à®æ¥¤ãà 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; //¯à¥¤ë¤ãé ¨ á«¥¤ãîé § ¯¨áì char recid[IDLENGTH]; //¨¬ï unsigned int flag; char *newid; //¡«®ª á ¤ 묨, ¤«ï áâàãªâãà ¤à¥á ⥣ ,¤«ï ¯à®æ¥¤ãà ¯ à ¬¥âàë int rectok; //⨯ int recrm; //¤«ï áâàãªâãà ç¨á«® ª®¯¨© int recsegm; int recpost; int recsize; int recsib; int line; //®¬¥à «¨¨¨ int file; //ä ©« int count; //áç¥â稪 ¨á¯®«ì§®¢ ¨ï unsigned short type; unsigned short npointr; union{ char *sbuf; //㪠§ â¥«ì ¡«®ª ¨á室®£® ⥪áâ _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; //ä« £ ¨á¯®«ì§®¢ ¨ï unsigned char flag; //ä« £ static*/ idrec rec; localinfo li; unsigned char fuse; //ä« £ ¨á¯®«ì§®¢ ¨ï }; #define INITBPPAR 1 //¨¨æ¨ «¨§ æ¨ï BP ¯®á«¥ ¯ à ¬¥â஢ #define INITBPLOC 2 //¨¨æ¨ «¨§ æ¨ï BP ¯®á«¥ «®ª «ìëå #define INITBPENTER 4 #define INITBPADDESP 8 struct HEADLOC { int type; //⨯ § £®«®¢ª unsigned int ofs; // ¤à¥á § 票ï unsigned int num; //¢¥«¨ç¨ § 票ï }; 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; // ¤à¥á ⥣ ¢«®¦¥®© áâàãªâãàë idrec *rec; }; int tok; union{ unsigned int numel; //ç¨á«® í«¥¬¥â®¢ í⮣® ⨯ BIT bit; }; unsigned int ofs; //ᬥ饨¥ ®â ç « áâàãªâãàë char name[IDLENGTH]; }; struct structteg { struct structteg *left; //á«¥¤ãî騩 ⥣ struct structteg *right; //á«¥¤ãî騩 ⥣ unsigned int size; //à §¬¥à ⥣ unsigned int numoper; //ç¨á«® ®¯¥à ¤®¢ áâàãªâãàë struct elementteg *baza; // ¤à¥á á ®¯¨á ¨¥¬ í«¥¬¥â®¢ ⥣ unsigned int flag; char name[IDLENGTH]; }; struct listexport { long address; char name[IDLENGTH]; }; typedef struct _IOFS_ { unsigned int ofs; unsigned int line; //®¬¥à «¨¨¨ unsigned int file; //ä ©« unsigned char dataseg; }IOFS; typedef struct _UNDEFOFF_ { struct _UNDEFOFF_ *next; IOFS *pos; //¡ãä¥à á ¤à¥á ¬¨ ®âªã¤ áá뫪¨ int num; //ç¨á«® ááë«®ª íâã ¬¥âªã char name[IDLENGTH]; }UNDEFOFF; typedef struct _LISTCOM_ { char name[IDLENGTH]; }LISTCOM; typedef struct _SINFO_ { char *bufstr; int size; }SINFO; //áâàãªâãà ᯨ᪠api-¯à®æ¥¤ãà typedef struct _APIPROC_ { struct idrec *recapi; }APIPROC; // typedef struct _DLLLIST_ { struct _DLLLIST_ *next; //á«¥¤ãîé ï DLL struct _APIPROC_ *list; //ᯨ᮪ ¯à®æ¥¤ãà unsigned short num; //ç¨á«® ¯à®æ¥¤ãà char name[IDLENGTH]; //¨¬ï DLL }DLLLIST; typedef struct _PE_HEADER_ { long sign; //ᨣ âãà - ¢á¥£¤ 'PE' short cpu; //¬¨ ⨯ CPU - ¢á¥£¤ 0x14C short numobj; //ç¨á«® ¢å®¤®¢ ¢ â ¡«¨æã ®¡ê¥ªâ®¢ long date_time; //¤ â ¬®¤¨ä¨ª 樨 «¨ª¥à®¬ long pCOFF; long COFFsize; short NTheadsize; //à §¬¥à § £®«®¢ª PE ®â MAGIC - ¢á¥£¤ 0xE0 short flags; short Magic; // § 票¥ ¯à£à ¬¬ë short LinkVer; //¢¥àá¨ï «¨ª¥à long sizecode; long sizeinitdata; long sizeuninitdata; long EntryRVA; // ¤à¥á ®â®á¨â IMAGE BASE ¯® ª®â®à®¬ã ¯¥à¥¤ ¥âáï ã¯à ¢«¥¨¥ long basecode; //RVA ᥪæ¨ï, ª®â®à ï ᮤ¥à¦¨â ¯à®£à ¬¬ë© ª®¤ long basedata; //RVA ᥪæ¨ï,ᮤ¥à¦ é ï ¤ ë¥ long ImageBase; //¢¨àâã «ìë© ç «ìë© ¤à¥á § £à㧪¨ ¯à®£à ¬¬ë long objAlig; //¢ëà ¢¨¢ ¨¥ ¯à®£à ¬¬ëå ᥪ権 long fileAlig; //‚ëà ¢¨¢ ¨¥ ᥪ権 ¢ ä ©«¥ long OSver; //®¬¥à ¢¥àᨨ ®¯¥à á¨áâ¥¬ë ¥®¡å ¯à®£à ¬¬¥ long userver; long SubSysVer; long rez; long imagesize; //à §¬¥à ¢ ¡ ©â å § £à㦠¥¬®£® ®¡à § á § £®«®¢ª ¬¨ ¢ëà ¢¥ë© long headsize; //à §¬ ¢á¥å § £®«®¢ª®¢ stub+PE+objtabl long checksum; short SubSys; //®¯¥à 樮 ï á¨áâ ¥®¡å ¤«ï § ¯ã᪠short DLLflag; long stackRezSize; long stackComSize; long heapRezSize; long heapComSize; long loaderFlag; long numRVA; //¢á¥£¤ 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[16]; 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; /* ¤¢¥ ᥪã¤ë */ unsigned ft_min:6; /* ¬¨ãâë */ unsigned ft_hour:5; /* ç áë */ unsigned ft_day:5; /* ¤¥ì */ unsigned ft_month:4; /* ¬¥áïæ */ unsigned ft_year:7; /* £®¤-1980 */ }; typedef struct _STRING_LIST_ { void *next; //á«¥¤ãîé ï áâàãªâãà unsigned int len; //¤«¨ áâப¨ unsigned int ofs; // ¤à¥á ¢ ¢ë室®¬ ä ©«¥ unsigned char type; //⨯ â¥à¬¨ â®à unsigned char plase; //£¤¥ ᥩç á áâப - 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; //ç¨á«® í«¥¬¥â®¢ int type; //à §à冷áâì int numcase; //ç¨á«® ¨á¯®«ì§ã¥¬ëå í«¥¬¥â®¢ int defal; //§ 票¥ ¯® 㬮«ç ¨î. int ptb; // ¤à¥á 㪠§ ⥫ï íâã â ¡«¨æã ¢ ¡«®ª¥ ª®¤ int ptv; // ¤à¥á â ¢«¨æë ¢¥«¨ç¨ int mode; //⨯ switch int razr; //à §à冷áâì ¢¥«¨ç¨ }FSWI; struct paraminfo { unsigned int ofspar; unsigned char type[8]; }; struct MEOSheader { unsigned char sign[25]; 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; //⨯ ᮤ¥à¦¨¬®£® 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; //à §¬¥à ¯ ¬ï⨠¤«ï ॣ¨áâ஢ unsigned char all; //¢á¥ ॣ¨áâàë unsigned char reg[8]; //ª àâ ॣ¨áâ஢ }; struct SAVEPAR { unsigned char ooptimizespeed; unsigned char owarning; unsigned char odbg; unsigned char odosstring; unsigned char ouseinline; unsigned char oam32; // ०¨¬ 32 ¡¨â®© ¤à¥á 樨 unsigned char oalignword; unsigned char oAlignCycle; //¢ëà ¢¨¢ âì ç « 横«®¢ unsigned char oidasm; // áᥬ¡«¥àë¥ ¨áâàãªæ¨¨ áç¨â âì ¨¤¥â¨ä¨ª â®à ¬¨ int ooptnumber; int odivexpand; unsigned char ooptstr; //®¯â¨¬¨§ æ¨ï áâப®¢ëå ª®áâ â 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; //ç¨á«® ¯ à ¬¥â஢ ¢ ⥪ã饬 define char *declareparamdef; //ᯨ᮪ ®¡ê¥ëå ¯ à ¬¥â஢ define char *paramdef; //ᯨ᮪ ®¢ëå ¯ à ¬¥â஢ int freze; //ä« £ § ¯à¥é¥¨ï 㤠«¥¨ï áâàãªâãàë }; 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; };