Subversion Repositories Kolibri OS

Rev

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

  1. //===== ƒ«®¡ «ì­ë¥ ¯¥à¥¬¥­­ë¥
  2. // ---- ˆ­ä®à¬ æ¨ï ¯® tokens
  3. dword tok=0;
  4. dword type=0;
  5. dword src=0;
  6. dword post=0;
  7. dword number=0;
  8. byte string[STRLEN]=0;
  9. dword tok2=0;
  10. dword type2=0;
  11. dword src2=0;
  12. dword post2=0;
  13. dword number2=0;
  14. dword modline=0;
  15. byte string2[STRLEN]=0;
  16. // ---- ãä¥à    ã¯à ¢«ïî騥 ä« £¨
  17. dword currmod=0;        // ®¬¥à ⥪ã饣® ä ©« 
  18. dword displaytokerrors=1;// ”« £ ¢ë¢®¤  á®®¡é¥­ © ®¡ ®è ¡ª¥
  19. dword error=0;          // ‘®¤¥à¦¨â ­®¬¥à ⥪ã饩 ®è¨¡ª
  20. dword maxerrors = 16; // à¥¤¥« ¯® ª®«¨ç¥áâ¢ã ®è¨¡®ª
  21. dword  makemapfile=0; // ”« £ £¥­¥à æ ¨ MAP-ä ©« 
  22. dword  dbg=0;   // ”« £ £¥­¥à æ ¨ TDS-ä ©«  ¤«ï TD32
  23. dword dbginfo=0;        // “ª § â¥«ì ­  ¡ãä¥à dbg ¨­ä®à¬ æ¨¥© (á¬.®¯¨á ­¨¥ ¢ enum dbg_...)
  24. dword dbgs=0;   // ’¥ªã騩 㪠§ â¥«ì ¢ dbginfo
  25. dword input=0;          // “ª § â¥«ì ­  ­ ç «® ¤¨­ ¬¨ç¥áª®£® ¡ãä¥à  á ¢å®¤­ë¬ ä ©«®¬
  26. dword inptr=0;          // “ª § â¥«ì ­  ⥪ãé ᨬ¢®« ¢ ¡ãä¥à¥ input
  27. dword inptr2=0;         // Š®¯¨ï inptr
  28. dword endoffile=0;      // ”« £ ª®­æ  ä ©« 
  29. dword totallines=1; // Ž¡é¥¥ ª®«¨ç¥á⢮ ®âª®¬¯¨«¨à®¢ ­­ëå áâப
  30. dword linenumber=0; // ®¬¥à ⥪ã饩 áâப¨
  31. dword linenum2=0; // ®¬¥à á«¥¤ãî饩 áâப¨
  32. dword list=0;   // ”« £ ¢ë¤ ç¨ «¨á⨭£ 
  33. dword label=0;          // ‘ª¢®§­®© ­®¬¥à ¤«ï «®ª «ì­ëå ¬¥â®ª
  34. dword mapfile=0;        // Handle ¤«ï MAP ä ©« 
  35. dword module=0;         // ‘ç¥â稪 ®âª®¬¯¨«¨à®¢ ­­ëå ¬®¤ã«¥©
  36. dword outptr=0;         // ˆ­¤¥ªá ¢ output
  37. dword output=0;         // “ª § â¥«ì ­  ¡ãä¥à á ª®¤®¬
  38. dword localsize=0;      //  §¬¥à á⥪  ¯®¤ «®ª «ì­ë¬¨ ¯¥à¥¬¥­­ë¬¨
  39. dword posttype=0; // “ª § â¥«ì ­  ⨯ POST
  40. dword postloc=0;        // “ª § â¥«ì ­  ¯®«®¦¥­¨¥ ¢ output
  41. dword postnum=0;        // “ª § â¥«ì ­  §­ ç¥­¨¥ ¯® postloc
  42. dword posts=0;          // ®¬¥à ⥪ã饩 § ¯¨á¨ ¢ posttype, postloc ¨ postnum
  43. dword postsize=0; // ‘㬬 à­ë© à §¬¥à ¢á¥å post-¯¥à¥¬¥­­ëå
  44. dword poststrptr=MAXDATA-1; // ˆ­¤¥ªá ¤«ï ¢ë¢®¤  post-áâப
  45. dword procedure_start=0;// €¤à¥á ­ ç «  ¯à®æ¥¤ãàë
  46. dword runfilesize=0;
  47. dword startptr=0; // “ª § â¥«ì ­  main()
  48. dword treestart=0;      // “ª § â¥«ì ­  ­ ç «® ᯨ᪠ ¨¤¥­â¨ä¨ª â®à®¢
  49. dword treeptr=0;        // “ª § â¥«ì ­  ⥪ãéã  § ¯¨áì ¢ ᯨ᪥ ¨¤¥­â ª â®à®¢
  50. dword locallist = NULL; // “ª § â¥«ì ­  ­ ç «® ᯨ᪠ «®ª «ì­ëå ¯¥à¥¬¥­­ëå
  51. dword localptr=NULL;    // “ª § â¥«ì ­  ⥪ãéãî § ¯¨áì ¢ ᯨ᪥ «®ª «ì­ëå
  52. dword DLLcount=0; // ‘ç¥â稪 ¨¬¯®àâ¨à®¢ ­­ëå DLL
  53. dword APIcount=0; // ‘ç¥â稪 ¨á¯®«ì§ã¥¬ëå API
  54. dword importFlag=0; // ”« £ ¨¬¯®àâ  ¨§ DLL
  55. dword DLLlist[MAXDLLS];
  56. byte currentfilename[FILENAMESIZE] = 0;
  57. byte inputfile[FILENAMESIZE]=0;
  58. byte rawfilename[FILENAMESIZE]=0;
  59. byte mapstr[120]=0;
  60. // ---- DOS&PE headers
  61. word exeheader[34]={
  62.          0x5A4D,0x40,1,0,2,0,0xFFFF,0,
  63.          0,0,0,0,0x40,0,0,0,
  64.          0xC88C,0xD88E,0x0FBA,0xB400,0xCD09,0xB821,0x4C00,0x21CD,
  65.          0x6957,0x336E,0x2032,0x6E6F,0x796C,0x2421,0x40,0,
  66.          0x4550,0};
  67. // PE Header
  68. //unsigned dword PEsign = 0x4550;
  69. word PEmachine=0x14C; // target machine = Intel 386
  70. word PEnSections=1;     // XAC - only .text!!! number of sections in Sections table
  71. word PEDate=0;
  72. word PEtime=0;
  73. dword PEpSymbolTable=0;  // Offset within COFF file of the symbol table
  74. dword PEnSymbols=0;  // number of entries in the symbol table
  75. word PEOptHeaderSize=0xE0; // Size of optional header
  76. word PECharacteristics=0x30E; //0x30E 32-bit+...
  77. // Optional header (only in EX image)
  78. word OptMagic=0x10B;    // normal executable
  79. byte OptLmajor=2;                // Linker major version number
  80. byte OptLminor=0x37;             // Linker minor version number
  81. dword OptCodeSize=0;     // Size of the code section
  82. dword OptInitDataSize=0; // Size of the initialized data section
  83. dword OptUninitDataSize=0;// Size of the uninitialized data section (BSS)
  84. dword OptEntryPointRVA=0x1000;// Address of entry point, relative to image base
  85. dword OptBaseOfCode=0x1000;// Address realtive to image base
  86. dword OptBaseOfData=0;//Address realtive to image base
  87. dword OptImageBase=0x00400000;// Preferred address of first byte of image
  88. dword OptSectionAlignment=0x1000;
  89. dword OptFileAlignment=0x200;
  90. word OptOSmajor=1;
  91. word OptOSminor=0;
  92. dword OptUserVersion=0;
  93. word OptSubSysMajor=4;
  94. word OptSubSysMinor=0;
  95. dword OptReserved=0;
  96. dword OptImageSize=0x0;  // Size of image, including all headers
  97. dword OptHeaderSize=0x200;       //DOSheader+PEheader+ObjectTable
  98. dword OptFileChecksum=0; // Image file checksum
  99. word OptSubSystem=3;    // 2-GUI; 3-console
  100. word OptDLLflag=0;
  101. dword OptStackReserveSize=0x100000;
  102. dword OptStackCommitSixe=0x1000;
  103. dword OptHeapReserveSize=0x100000;
  104. dword OptHeapCommitSize=0x1000;
  105. dword OptLoaderSize=0;
  106. dword OptNumOfDataDirectories=16;
  107. // Optional header Data Directories
  108. dword OptExportTableAdr=0;
  109. dword OptExportTableSize=0;
  110. dword OptImportTableAdr=0;
  111. dword OptImportTableSize=0;
  112. dword OptResourceTableAdr=0;
  113. dword OptResourceTablesize=0;
  114. dword OptExceptionTableAdr=0;
  115. dword OptExceptionTableSize=0;
  116. dword OptSecurityTableAdr=0;
  117. dword OptSecurityTableSize=0;
  118. dword OptBaseRelocationTableAdr=0;
  119. dword OptBaseRelocationTableSize=0;
  120. dword OptDebugAdr=0;
  121. dword OptDebugSize=0;
  122. dword OptCopyrightAdr=0;
  123. dword OptCopyrightSize=0;
  124. dword OptGlobalPtrAdr=0;
  125. dword OptGlobalPtrSize=0;
  126. dword OptTLStableAdr=0;
  127. dword OptTLStablesize=0;
  128. dword OptLoadConfigTableAdr=0;
  129. dword OptLoadConfigTableSize=0;
  130. dword OptReserved2[10]={0,0,0,0,0,0,0,0,0,0};
  131. // Sections Table
  132. // TEXT section header
  133. byte TxtSectionName[8]=".text";
  134. dword TxtVirtualSize=0;
  135. dword TxtRVAoffset=0x1000;
  136. dword TxtSizeOfRawData=0;
  137. dword TxtPointerToRawData=0x200;
  138. dword TxtPointerToRelocs=0;
  139. dword TxtPointerToLinenumbers=0;
  140. word TxtNumberOfRelocs=0;
  141. word TxtNumberOfLinenumbers=0;
  142. dword TxtSectionFlags=0xE00000E0;        // can be executed + contain executable code
  143. // ---- ¥¨­¨æ  àã¥¬ë¥ ¤ ­­ë¥
  144. dword stdout;   // Handle to stdout
  145. byte cha,cha2;
  146. dword numberofids;
  147. dword current_proc_type;        // ’¨¯ ⥪ã饩 ¯à®æ¥¤ãàë (cpt_near, cpt_far)
  148. dword returntype;       // ’¨¯ ¢®§¢à é ¥¬®£® §­ ç¥­¨ï (void, byte, word, ...)
  149. dword paramsize;
  150. dword relation;
  151. dword startlabel,endlabel;
  152. byte modules[MAXMDL*FILENAMESIZE];
  153. dword St_Mnemonics[26];
  154. dword St_Registers[26];
  155. dword St_Directives[26];
  156. dword St_Sizes[26];
  157. byte Buffer16[64]; // ãä¥à ¤«ï á®àâ¨à®¢ª       áâப
  158.