home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / C++-7 / DISK7 / SOURCE / STARTUP / DEFSEGS.IN$ / DEFSEGS
Encoding:
Text File  |  1991-11-06  |  5.9 KB  |  170 lines

  1. ;***
  2. ;defsegs.inc - defines segments.
  3. ;
  4. ;   Copyright (c) 1989-1992, Microsoft Corporation.  All rights reserved.
  5. ;
  6. ;Purpose:
  7. ;   This file defines segments for the C and C++ libs.
  8. ;
  9. ;   NOTE:  As needed, special "CRT" segments can be added into the existing
  10. ;   init/term tables.  These will be for our use only -- users who put
  11. ;   stuff in here do so at their own risk. (See XFCCRT for an example.)
  12. ;
  13. ;*******************************************************************************
  14.  
  15. ;
  16. ; Define all segments used by the C runtime library
  17. ;
  18.  
  19. CrtDefSegs macro   SegList
  20.     irp     seg, <SegList>
  21.  
  22.     ifidni    <seg>,<code>
  23.         ifdef  FAR_CODE
  24.         createSeg _RTEXT, code, word, public, code, <>
  25.         else
  26.         createSeg _TEXT, code, word, public, code, <>
  27.         endif
  28.  
  29.     elseifidni <seg>,<wepcode>
  30.         createSeg WEP_TEXT, wepcode, word, public, code, <>
  31.  
  32.     elseifidni <seg>,<rcode>
  33.         createSeg _RTEXT, rcode, word, public, code, <>
  34.  
  35.     elseifidni <seg>,<etext>
  36.         createSeg C_ETEXT,etext, word,  public, ENDCODE,<>
  37.  
  38.     elseifidni <seg>,<cdata>
  39.         createSeg CDATA, cdata, word, common, DATA, DGROUP
  40.  
  41.     elseifidni <seg>,<data>
  42.         createSeg _DATA, data, word, public, DATA, DGROUP
  43.  
  44.     elseifidni <seg>,<null>
  45.         createSeg NULL, null, para, public, BEGDATA, DGROUP
  46.  
  47.     elseifidni <seg>,<stack>
  48.         ifdef FARSTACK
  49.         ; This segment has STACK class so it is at the end of DGROUP;
  50.         ; it is the first entry in the near heap.
  51.         createSeg NEARHEAP, stubheap, para, <>, STACK, DGROUP
  52.         ; Here is the real stack, not in DGROUP
  53.         createSeg STACK, stack, para,    stack,    STACK, <>
  54.         else ; not FARSTACK
  55.         createSeg STACK, stack, para,    stack,    STACK,    DGROUP
  56.         endif ;FARSTACK
  57.  
  58.     elseifidni <seg>,<const>
  59.         createSeg CONST, const, word, public, CONST,DGROUP
  60.  
  61.     elseifidni <seg>,<bss>
  62.         createSeg _BSS, _bss, word, public, BSS, DGROUP
  63.  
  64.     elseifidni <seg>,<emcode>
  65.         createSeg EMULATOR_TEXT, EmCode, para, public, CODE, DGROUP
  66.  
  67.     elseifidni <seg>,<emdata>
  68.         createSeg EMULATOR_DATA, EmData, para, public, FAR_DATA, DGROUP
  69.  
  70.     elseifidni <seg>,<dbdata>
  71.         ifndef  IBM
  72.         createSeg DBDATA, dbdata, word, common, DATA, DGROUP
  73.         else
  74.         %out <Error in CrtDefSeg:  DBDATA segment used in IBM version.>
  75.         .err
  76.         endif   ; !IBM
  77.  
  78.     elseifidni <seg>,<eseg>
  79.         createSeg EXEC, eseg, word, common, DATA, DGROUP
  80.  
  81.     elseifidni <seg>,<xiqcseg>
  82.         createSeg XIQC, xiqcseg, word, common, DATA, DGROUP  ; QC initializer -Zr  (DOS only)
  83.  
  84.     elseifidni <seg>,<xifseg>
  85.         createSeg XIFB, xifbseg, word, public, DATA, DGROUP
  86.         createSeg XIF,  xifseg,  word, public, DATA, DGROUP ; far init's
  87.         createSeg XIFE, xifeseg, word, public, DATA, DGROUP
  88.  
  89.     elseifidni <seg>,<xiseg>
  90.         createSeg XIB,  xibseg, word, public, DATA, DGROUP
  91.         createSeg XI,   xiseg,  word, public, DATA, DGROUP ; init's
  92.         createSeg XIE,  xieseg, word, public, DATA, DGROUP
  93.  
  94.     elseifidni <seg>,<xifcseg>
  95.         createSeg XIFCB, xifcbseg, word, public, DATA, DGROUP
  96.         createSeg XIFU,  xifuseg,  word, public, DATA, DGROUP ; far C++ User constructors.
  97.         createSeg XIFL,  xiflseg,  word, public, DATA, DGROUP ; far C++ Lib constructors.
  98.         createSeg XIFM,  xifmseg,  word, public, DATA, DGROUP ; far C++ MS constructors.
  99.         createSeg XIFCE, xifceseg, word, public, DATA, DGROUP
  100.  
  101.     elseifidni <seg>,<xoseg>
  102.         createSeg XOB,  xobseg, word, public, BSS, DGROUP
  103.         createSeg XO,   xoseg,  word, public, BSS, DGROUP ; atexit/onexit table
  104.         createSeg XOE,  xoeseg, word, public, BSS, DGROUP ; (in BSS because it is not initialized)
  105.  
  106.     elseifidni <seg>,<xofseg>
  107.         createSeg XOFB,  xofbseg, word, public, BSS, DGROUP
  108.         createSeg XOF,   xofseg,  word, public, BSS, DGROUP ; far atexit/onexit table
  109.         createSeg XOFE,  xofeseg, word, public, BSS, DGROUP ; (in BSS because it is not initialized)
  110.  
  111.     elseifidni <seg>,<xpseg>
  112.         createSeg XPB,  xpbseg, word, public, DATA, DGROUP
  113.         createSeg XP,   xpseg,  word, public, DATA, DGROUP ; preterm's
  114.         createSeg XPE,  xpeseg, word, public, DATA, DGROUP
  115.  
  116.     elseifidni <seg>,<xcseg>
  117.         createSeg XCB,  xcbseg, word, public, DATA, DGROUP
  118.         createSeg XC,   xcseg,  word, public, DATA, DGROUP ; term's
  119.         createSeg XCE,  xceseg, word, public, DATA, DGROUP
  120.  
  121.     elseifidni <seg>,<xcfseg>
  122.         createSeg XCFB,   xcfbseg,     word, public, DATA, DGROUP
  123.         ; *** XCFCRT is for CRT usage only and should be executed last ***
  124.         createSeg XCFCRT, xcfcrtseg, word, public, DATA, DGROUP ; far term's (CRT Only)
  125.         createSeg XCF,    xcfseg,     word, public, DATA, DGROUP ; far term's
  126.         createSeg XCFE,   xcfeseg,     word, public, DATA, DGROUP
  127.  
  128.     elseifidni <seg>,<iobsegs>
  129.         createSeg IOB,   iobseg,  word, public, DATA, DGROUP
  130.         createSeg IOBX,  iobxseg, word, public, DATA, DGROUP ; stdio iobs
  131.         createSeg IOBE,  iobeseg, word, public, DATA, DGROUP
  132.         createSeg IOB2,  iob2seg, word, public, DATA, DGROUP
  133.         createSeg IOB2X, iob2xseg,word, public, DATA, DGROUP
  134.         createSeg IOB2E, iob2eseg,word, public, DATA, DGROUP
  135.  
  136.     elseifidni <seg>,<nmsg>
  137.         createSeg HDR,  nhdr,  byte, public, MSG, DGROUP
  138.         createSeg MSG,  nmsg,  byte, public, MSG, DGROUP ; near message text
  139.         createSeg PAD,  npad,  byte, common, MSG, DGROUP
  140.         createSeg EPAD, nepad, byte, common, MSG, DGROUP
  141.  
  142.     elseifidni <seg>,<fmsg>
  143.         createSeg FAR_HDR,    fhdr,  byte, public, FAR_MSG, FMGROUP
  144.         createSeg FAR_MSG,    fmsg,  byte, public, FAR_MSG, FMGROUP ; far message text
  145.         createSeg FAR_PAD,    fpad,  byte, common, FAR_MSG, FMGROUP
  146.         createSeg FAR_EPAD, fepad, byte, common, FAR_MSG, FMGROUP
  147.  
  148.     else
  149.         %out <Error in CrtDefSeg:  Unknown segment &seg&.>
  150.         .err
  151.     endif
  152.  
  153.     endm    ;; irp loop
  154. endm    ;; CrtDefSeg macro
  155.  
  156.  
  157. ;
  158. ; Group text segments into DGROUP for COM libs
  159. ;
  160.  
  161. DefGrpCom macro
  162.     ifdef   _COM_
  163.     ; all segments are together in DGROUP
  164.     DGROUP    group  _TEXT, C_ETEXT, _DATA    ; define DGROUP
  165.     else
  166.      %out <Error in DefGrpCom: _COM_ not defined.>
  167.      .err
  168.     endif
  169. endm    ;; DefGrpCom
  170.