Subversion Repositories Kolibri OS

Rev

Rev 1846 | Blame | Last modification | View Log | Download | RSS feed

  1. //===== ƒ«®¡ «ì­ë¥ ª®­áâ ­âë
  2. #define STD_INPUT_HANDLE        -10
  3. #define STD_OUTPUT_HANDLE       -11
  4. #define STD_ERROR_HANDLE        -12
  5. #define CREATE_NEW              1
  6. #define CREATE_ALWAYS           2
  7. #define OPEN_EXISTING           3
  8. #define OPEN_ALWAYS             4
  9. #define TRUNCATE_EXISTING       5
  10. // ----
  11. #define GENERIC_READ    0x80000000
  12. #define GENERIC_WRITE   0x40000000
  13. #define GENERIC_EXECUTE 0x20000000
  14. #define GENERIC_ALL     0x10000000
  15. // ---- Š®­áâ ­âë ª®¬¯¨«ïâ®à 
  16. #define _END    0x1B
  17. #define FILENAMESIZE 80
  18. #define IDLENGTH 65 // „«¨­  ¨¬¥­¨ ¨¤¥­â¨ä¨ª â®à , ¢ª«îç ï NULL-â¥à¬¨­ â®à
  19. #define MAXDATA 512000  //  §¬¥à ¡ãä¥à®¢ ¯®¤ ª®¤ ¨ ¤ ­­ë¥
  20. #define MAXDBGS 50000 //  §¬¥à ¡ãä¥à®¢ ¯®¤ ®â« ¤®ç­ã  ¨­ä®à¬ æ¨î
  21. #define MAXDLLS 100
  22. #define MAXINPUT 512000 // Œ ªá¨¬ «ì­ë  à §¬¥à ¢å®¤­®£® ä ©« 
  23. #define MAXMDL  100     // Œ ªá¨¬ «ì­®¥ ç¨á«® includes
  24. #define MAXPOSTS 150000 //  §¬¥à ¡ãä¥à®¢ ¯®¤ POST ®¡à ¡®âªã
  25. #define NULL    0
  26. #define SORTSIZE 20
  27. #define STRLEN 1000 // „«¨­  ¡ãä¥à  ¯®¤ token
  28. // ------------------------------------------
  29. //===== ã¬¥à®¢ ­­ë¥ ª®­áâ ­âë
  30. // ---- Š®¤ë ¢®§¢à â 
  31. enum{ e_ok, e_outofmemory, e_cannotopeninput, e_toomanyerrors,
  32.         e_internalerror, e_noinputspecified, e_unknowncommandline,
  33.         e_extract, e_cannotopenmapfile, e_someerrors };
  34. // ---- Š®¤ë tokens tk_xxxx
  35. enum{
  36. tk_eof,tk_number,tk_string,tk_var,
  37. tk_id,
  38. tk_db,tk_dw,tk_dd,tk_dq,        // ’¨¯ë ¯¥à¥¬¥­­ëå
  39. tk_byte,tk_char,tk_word,tk_short,
  40. tk_dword,tk_int,
  41. tk_enum,                        // ã¬¥à®¢ ­­ë¥ ª®­áâ ­âë
  42. tk_struc,       // Ž¯à¥¤¥«¥­¨¥ áâàãªâãàë
  43. tk_if,tk_else,tk_endif, // “á«®¢­ ï ª®¬¯¨«ïæ¨ï
  44. tk_include,tk_define, // ‚ª«î祭¨¥ ä  « //Ž¯à¥¤¥«¥­¨¥ ª®­áâ ­âë
  45. tk_import,              // ˆ¬¯®àâ ¨§ DLL
  46. tk_map,                 // ƒ¥­¥à æ¨ï MAP-ä ©« 
  47. tk_debug,       // ƒ¥­¥à æ¨ï ®â« ¤®ç­®© ¨­ä®à¬ æ¨¨
  48. tk_list,                // ‚ë¤ ç  ASM-«¨á⨭£ 
  49. tk_dll,                 // ƒ¥­¥à æ¨ï DLL-ä ©« 
  50. tk_loop,tk_return,tk_do,
  51. tk_while,tk_void,
  52. tk_continue,tk_break,
  53. tk_docase,tk_case,tk_default,
  54. tk_carryflag,tk_extract,tk_FALSE,tk_from,
  55. tk_notcarryflag,tk_notoverflow,tk_overflow,tk_TRUE,
  56. tk_zeroflag,tk_notzeroflag,
  57. tk_assign,tk_swap,
  58. tk_minus,tk_plus,
  59. tk_minusminus,tk_plusplus,tk_mult,tk_div,tk_mod,
  60. tk_multminus,tk_divminus,tk_modminus,tk_rr,tk_ll,
  61. tk_rrminus,
  62. tk_llminus,
  63. tk_minusequals,tk_plusequals,tk_rrequals,tk_llequals,
  64. tk_or,tk_and,tk_xor,tk_not,
  65. tk_orminus,
  66. tk_andminus,tk_xorminus,
  67. tk_orequals,tk_andequals,tk_xorequals,
  68. tk_equalto,
  69. tk_notequal,tk_greater,tk_greaterequal,tk_less,
  70. tk_lessequal,
  71. tk_oror,tk_andand,tk_openbrace,tk_closebrace,
  72. tk_openbracket,tk_closebracket,tk_openblock,tk_closeblock,
  73. tk_colon,tk_semicolon,tk_comma,tk_period,
  74. tk_dollar,tk_question,tk_tilda,
  75. tk_reg,tk_controlreg,tk_debugreg,tk_testreg,tk_seg,
  76. tk_undefproc,tk_proc,
  77. tk_postnumber,
  78. tk_local,tk_locallabel,tk_param,tk_locnumber,
  79. tk_DLL,tk_API,tk_directive,tk_command,tk_mnemonics,
  80. tokens
  81. };
  82. // ---- Š®¤¨à®¢ª  ⨯  ¯à®æ¥¤ãà
  83. enum{ cpt_near, cpt_far };
  84. // ---- Š®¤¨à®¢ª  POST § ¯¨á¥©
  85. enum { POST_CALL=1, POST_API, POST_DATA, POST_LOC, POST_STR };
  86. // ---- Ž¯¨á ­¨¥ áâàãªâãàë ¢ dbginfo: dbg_...
  87. enum{ dbg_mod=0,        // ®¬¥à ¬®¤ã«ï
  88.         dbg_line=4, // ®¬¥à áâப      ¢ ¬®¤ã«¥
  89.         dbg_loc=8,      // ®§¨æ¨ï ¢ EXE-ä ©«¥
  90.         dbg_size=12}; // à §¬¥à áâàãªâãàë
  91. // ---- Ž¯¨á ­¨¥ áâàãªâãàë idrec
  92. enum{ left=0,   // “ª § â¥«ì ­  idrec
  93.         right=4,                // “ª § â¥«ì ­  idrec
  94.         recid=8,                // ˆ¬ï ¨¤¥­â¨ä¨ª â®à 
  95.         newid=recid+4,  // “ª § â¥«ì ­   «¨ á ¤«ï recid
  96.         rectok=newid+4, // ®¬¥à token
  97.         rectype=rectok+4, // ’¨¯ token: void, byte, char, word, ...
  98.         recsrc=rectype+4, // ˆá室­ë© ⥪áâ
  99.         recpost=recsrc+4, // ”« £ POST ¯¥à¥¬¥­­®©
  100.         recnumber=recpost+4, // ‡­ ç¥­¨¥ ¨«¨ offset ¢ recsrc
  101.         recmodline=recnumber+4,// ®¬¥à ¬®¤ã«ï ¨ áâப¨
  102.         recsize=recnumber+4};// à §¬¥à áâàãªâãàë
  103. // ---- Ž¯¨á ­¨¥ áâàãªâãàë localrec
  104. enum{ localnext=0,              // “ª § â¥«ì ­  á«¥¤ãîéãî localrec
  105.         localid=4,              // ˆ¬ï «®ª «ì­®  ¯¥à¥¬¥­­®©
  106.         localtok=localid+IDLENGTH,// ‡­ ç¥­¨¥ token
  107.         localtype=localtok+4, // ⨯ ¯¥à¥¬¥­­®©
  108.         localnumber=localtype+4,        // ®§¨æ¨ï ¢ á⥪¥
  109.         local_size=localnumber+4};      //  §¬¥à áâàãªâãàë
  110.