//===== ƒ«®¡ «ìë¥ ª®áâ âë #define STD_INPUT_HANDLE -10 #define STD_OUTPUT_HANDLE -11 #define STD_ERROR_HANDLE -12 #define CREATE_NEW 1 #define CREATE_ALWAYS 2 #define OPEN_EXISTING 3 #define OPEN_ALWAYS 4 #define TRUNCATE_EXISTING 5 // ---- #define GENERIC_READ 0x80000000 #define GENERIC_WRITE 0x40000000 #define GENERIC_EXECUTE 0x20000000 #define GENERIC_ALL 0x10000000 // ---- Š®áâ âë ª®¬¯¨«ïâ®à #define _END 0x1B #define FILENAMESIZE 80 #define IDLENGTH 65 // „«¨ ¨¬¥¨ ¨¤¥â¨ä¨ª â®à , ¢ª«îç ï NULL-â¥à¬¨ â®à #define MAXDATA 512000 // §¬¥à ¡ãä¥à®¢ ¯®¤ ª®¤ ¨ ¤ ë¥ #define MAXDBGS 50000 // §¬¥à ¡ãä¥à®¢ ¯®¤ ®â« ¤®çã ¨ä®à¬ æ¨î #define MAXDLLS 100 #define MAXINPUT 512000 // Œ ªá¨¬ «ìë à §¬¥à ¢å®¤®£® ä ©« #define MAXMDL 100 // Œ ªá¨¬ «ì®¥ ç¨á«® includes #define MAXPOSTS 150000 // §¬¥à ¡ãä¥à®¢ ¯®¤ POST ®¡à ¡®âªã #define NULL 0 #define SORTSIZE 20 #define STRLEN 1000 // „«¨ ¡ãä¥à ¯®¤ token // ------------------------------------------ //===== 㬥஢ ë¥ ª®áâ âë // ---- Š®¤ë ¢®§¢à â enum{ e_ok, e_outofmemory, e_cannotopeninput, e_toomanyerrors, e_internalerror, e_noinputspecified, e_unknowncommandline, e_extract, e_cannotopenmapfile, e_someerrors }; // ---- Š®¤ë tokens tk_xxxx enum{ tk_eof,tk_number,tk_string,tk_var, tk_id, tk_db,tk_dw,tk_dd,tk_dq, // ’¨¯ë ¯¥à¥¬¥ëå tk_byte,tk_char,tk_word,tk_short, tk_dword,tk_int, tk_enum, // 㬥஢ ë¥ ª®áâ âë tk_struc, // Ž¯à¥¤¥«¥¨¥ áâàãªâãàë tk_if,tk_else,tk_endif, // “á«®¢ ï ª®¬¯¨«ïæ¨ï tk_include,tk_define, // ‚ª«î票¥ ä « //Ž¯à¥¤¥«¥¨¥ ª®áâ âë tk_import, // ˆ¬¯®àâ ¨§ DLL tk_map, // ƒ¥¥à æ¨ï MAP-ä ©« tk_debug, // ƒ¥¥à æ¨ï ®â« ¤®ç®© ¨ä®à¬ 樨 tk_list, // ‚ë¤ ç ASM-«¨á⨣ tk_dll, // ƒ¥¥à æ¨ï DLL-ä ©« tk_loop,tk_return,tk_do, tk_while,tk_void, tk_continue,tk_break, tk_docase,tk_case,tk_default, tk_carryflag,tk_extract,tk_FALSE,tk_from, tk_notcarryflag,tk_notoverflow,tk_overflow,tk_TRUE, tk_zeroflag,tk_notzeroflag, tk_assign,tk_swap, tk_minus,tk_plus, tk_minusminus,tk_plusplus,tk_mult,tk_div,tk_mod, tk_multminus,tk_divminus,tk_modminus,tk_rr,tk_ll, tk_rrminus, tk_llminus, tk_minusequals,tk_plusequals,tk_rrequals,tk_llequals, tk_or,tk_and,tk_xor,tk_not, tk_orminus, tk_andminus,tk_xorminus, tk_orequals,tk_andequals,tk_xorequals, tk_equalto, tk_notequal,tk_greater,tk_greaterequal,tk_less, tk_lessequal, tk_oror,tk_andand,tk_openbrace,tk_closebrace, tk_openbracket,tk_closebracket,tk_openblock,tk_closeblock, tk_colon,tk_semicolon,tk_comma,tk_period, tk_dollar,tk_question,tk_tilda, tk_reg,tk_controlreg,tk_debugreg,tk_testreg,tk_seg, tk_undefproc,tk_proc, tk_postnumber, tk_local,tk_locallabel,tk_param,tk_locnumber, tk_DLL,tk_API,tk_directive,tk_command,tk_mnemonics, tokens }; // ---- Š®¤¨à®¢ª ⨯ ¯à®æ¥¤ãà enum{ cpt_near, cpt_far }; // ---- Š®¤¨à®¢ª POST § ¯¨á¥© enum { POST_CALL=1, POST_API, POST_DATA, POST_LOC, POST_STR }; // ---- Ž¯¨á ¨¥ áâàãªâãàë ¢ dbginfo: dbg_... enum{ dbg_mod=0, // ®¬¥à ¬®¤ã«ï dbg_line=4, // ®¬¥à áâப ¢ ¬®¤ã«¥ dbg_loc=8, // ®§¨æ¨ï ¢ EXE-ä ©«¥ dbg_size=12}; // à §¬¥à áâàãªâãàë // ---- Ž¯¨á ¨¥ áâàãªâãàë idrec enum{ left=0, // “ª § ⥫ì idrec right=4, // “ª § ⥫ì idrec recid=8, // ˆ¬ï ¨¤¥â¨ä¨ª â®à newid=recid+4, // “ª § â¥«ì «¨ á ¤«ï recid rectok=newid+4, // ®¬¥à token rectype=rectok+4, // ’¨¯ token: void, byte, char, word, ... recsrc=rectype+4, // ˆáå®¤ë© â¥ªáâ recpost=recsrc+4, // ”« £ POST ¯¥à¥¬¥®© recnumber=recpost+4, // ‡ 票¥ ¨«¨ offset ¢ recsrc recmodline=recnumber+4,// ®¬¥à ¬®¤ã«ï ¨ áâப¨ recsize=recnumber+4};// à §¬¥à áâàãªâãàë // ---- Ž¯¨á ¨¥ áâàãªâãàë localrec enum{ localnext=0, // “ª § ⥫ì á«¥¤ãîéãî localrec localid=4, // ˆ¬ï «®ª «ì® ¯¥à¥¬¥®© localtok=localid+IDLENGTH,// ‡ 票¥ token localtype=localtok+4, // ⨯ ¯¥à¥¬¥®© localnumber=localtype+4, // ®§¨æ¨ï ¢ á⥪¥ local_size=localnumber+4}; // §¬¥à áâàãªâãàë