[comp.os.msdos.programmer] Segment questions

west@turing.toronto.edu (Tom West) (09/20/90)

(1) If a variable in a LARGE model program is declared _near, does the linker
automatically place it in the default data segment (_DATA)?  If not, how
do you make certain it is placed there?  

(2) Which segment are static variable placed.  Obviously I can't find them
in the map file :-).  Can I assume they are placed in _DATA if they fit?

(3) Also, a question about segments.  Looking through the map file produced
by the MSC 6.0 linker, I notice a number of segments that I don't recognize.
I wonder if anyone else can help.  Anything with a purpose of ? is an 
unknown to me.

Segment Name	Length	Class	Purpose

MYPROG1_TEXT	40k	CODE	The code of my program (segment 1)
MYPROG2_TEXT	40k	CODE	The code of my program (segment 2)
_TEXT		23k	CODE	The code for the MSC libraries
EMULATOR_TEXT	10k	CODE	The code for the MSC FP emulator
_GR_TEXT	19k	CODE	The code for the MSC graphics library
C_ETEXT		0	ENDCODE	An end of code segment marker?  
EMULATOR_DATA	<1k	FAR_DATA  The data for the MSC FP emulator.  
				  What's FAR_DATA class?
FAR_BSS		6k	FAR_BSS	?
NULL		<1k	BEGDATA	? 
_DATA		41k	DATA	The data of my program and MSC libraries
XIQC		<1k	DATA	?
DBDATA		<1k	DATA	?
CDATA		<1k	DATA	?
XIFB		0	DATA	?
... lots of other really small segments beginning with X ...
XCFE		0	DATA	?
EXEC		<1k	DATA	?
CONST		2k	CONST	?
HDR		0	MSG	?
MSG		<1k	MSG	?
PAD		<1k	MSG	?
EPAD		<1k	MSG	?
_BSS		5k	BSS	?
XOB		0	BSS	?
XO		0	BSS	?
XOE		0	BSS	?
c_common	512	BSS	?
STACK		9k	STACK	?

    Thanks in advance for any help. 


(NB) The program uses the far heap a lot, so despite the fact that 
     the total of data is < 64k, I need to compile LARGE model.


					Tom West
					west@turing.toronto.edu