(.map) Borland .MAP File Format |
The MAP file is simply a list of the segments contained in the compiled
program together with information about the segment type and where it
appears in the compiled code.
Here is an example of a .MAP file for a TASM prog i wrote:
Start | Stop | Length | Name | Class |
00000H | 00000H | 00000H | _TEXT | CODE |
00000H | 00356H | 00357H | _CODESEG | CODE |
00358H | 00358H | 00000H | _DATA | DATA |
00360H | 00EE9H | 00B8AH | _VARSEG | DATA |
00EF0H | 108EFH | 0FA00H | _SCRNSEG | SCRN |
108F0H | 1092FH | 00040H | _STACKSEG | STACK |
Program entry point at 0000:02C7
Warning: No stack
First it displays headings for each column (start, stop, length, name, and
class).. then it lists all the segments in the order they appear in the
executable... the start is how far into the code (in hex) that the segment
starts at, stop is how far into the code the segment ends.. and the length
is stop - start. Under name is just the name of the segment that the
programmer gave it when programming it.. (default segs are _TEXT and _DATA
if you just use .CODE and .DATA to start your segs) and class is the alias
that you give the seg.. for example.. if you declare the seg like the
following in your program:
_SCRNSEGSEGMENT PUBLIC 'SCRN'
_SCRNSEGENDS
the name will be _SCRNSEG and the class will be SCRN. The program entry
point is the state of CS:IP upon entry to the program (CS will be offset
however depending on where in memory the program is loaded).. after that
it lists any warnings or errors in the program.. in this case it gave a no
stack warning because i manually declared a stack seg rather than using
the conventional .STACK <SIZE> directive.