| |||||||||||||||||||||||||||||||||||||||||||||||||
Technical Support On-Line Manuals BL51 User's Guide | Listing (MAP) FileThe linker listing file or map file contains an abundance of information about the link/locate process and is composed of a number of sections, each of which is described below in the order in which they appear in the map file. Page HeaderEach listing page includes a header with the linker version number, date, time, and page number. BL51 LINKER/LOCATER V3.62 02/29/2004 09:59:51 PAGE 1 Command LineThe entire command line that was used to invoke the linker is included in the map file. This often helps diagnose problems with the command line. BL51 LINKER/LOCATER V3.62, INVOKED BY: C:\KEIL\C51\BIN\BL51.EXE Measure.obj, Mcommand.obj, Getline.obj >> TO Measure REGFILE (.\Measure.ORC) CLASSES (HDATA (X:0X >> 0-X:0XFFFF), ECODE (C:0X0-C:0XFFFF), HCONST (C:0X0-C:0X >> FFFF)) CPU DetailsDetails about the selected CPU, mode, and memory model are included. These indicate the default memory model libraries included in the linkage. If floating-point math is used, the floating-point libraries are included as well. CPU MODE: 8051 MODE MEMORY MODEL: SMALL WITH FLOATING POINT ARITHMETIC Input ModulesThe input modules section includes the names of all object modules and library files and modules that are included in the linkage. This is a good place to check if you have problems linking certain object files.
INPUT MODULES INCLUDED:
Measure.obj (MEASURE)
COMMENT TYPE 0: C51 V7.09
Mcommand.obj (MCOMMAND)
COMMENT TYPE 0: C51 V7.09
Getline.obj (GETLINE)
COMMENT TYPE 0: C51 V7.09
C:\KEIL\C51\LIB\C51FPS.LIB (?C?FPADD)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (?C?FPMUL)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (?C?FPDIV)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (?C?FPCMP)
COMMENT TYPE 1: A51 / ASM51 Assembler
.
.
.
C:\KEIL\C51\LIB\C51FPS.LIB (PRINTF)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (SCANF)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (?C?FPGETOPN)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (?C?FPROUND)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (?C?FPCONVERT)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51FPS.LIB (?C?ATOF)
COMMENT TYPE 1: A51 / ASM51 Assembler
.
.
.
C:\KEIL\C51\LIB\C51S.LIB (GETCHAR)
COMMENT TYPE 1: A51 / ASM51 Assembler
C:\KEIL\C51\LIB\C51S.LIB (UNGETC)
COMMENT TYPE 1: A51 / ASM51 Assembler
Memory ClassesThe active memory classes section includes the base address, starting address, ending address, and number of bytes used for each memory class in the program. ACTIVE MEMORY CLASSES OF MODULE BASE START END USED MEMORY CLASS ========================================================== X:000000H X:000000H X:00FFFFH HDATA C:000000H C:000000H C:00FFFFH ECODE B00:0000H C:000000H C:00FFFFH HCONST C:000000H C:000000H C:00FFFFH 001B7DH CODE I:000000H I:000000H I:00007FH 000055H DATA X:000000H X:000000H X:00FFFFH 001FF8H XDATA I:000020H.0 I:000020H.0 I:00002FH.7 000001H.7 BIT I:000000H I:000000H I:0000FFH 000010H IDATA Memory MapThe memory map lists the starting and ending address, type, relocation type, alignment, tgroup, group, combination type, class, and name of each section in the program. The NOMAP directive suppresses output of this table. MEMORY MAP OF MODULE: Measure (MEASURE) START STOP LENGTH ALIGN RELOC MEMORY CLASS SEGMENT NAME ========================================================================= * * * * * * * * * * * D A T A M E M O R Y * * * * * * * * * * * * * 000000H 000007H 000008H --- AT.. DATA "REG BANK 0" 000008H 00000FH 000008H --- AT.. DATA "REG BANK 1" 000010H 000010H 000001H BYTE UNIT DATA ?DT?GETCHAR 000011H 00001FH 00000FH BYTE UNIT IDATA _IDATA_GROUP_ 000020H.0 000021H.2 000001H.3 BIT UNIT BIT _BIT_GROUP_ 000021H.3 000021H.5 000000H.3 BIT UNIT BIT ?BI?MEASURE 000021H.6 000021H.6 000000H.1 BIT UNIT BIT ?BI?GETCHAR 000021H.7 000021H 000000H.1 --- --- **GAP** 000022H 00004DH 00002CH BYTE UNIT DATA _DATA_GROUP_ 00004EH 000065H 000018H BYTE UNIT DATA ?DT?MEASURE 000066H 000066H 000001H BYTE UNIT IDATA ?STACK * * * * * * * * * * * C O D E M E M O R Y * * * * * * * * * * * * * 000000H 000002H 000003H --- OFFS.. CODE ?CO??C_STARTUP?0 000003H 000007H 000005H BYTE UNIT CODE ?PR?GETCHAR?UNGETCHAR 000008H 00000AH 000003H --- --- **GAP** 00000BH 00000DH 000003H BYTE OFFS.. CODE ?MEASURE?0000B 00000EH 0007B0H 0007A3H BYTE UNIT CODE ?C?LIB_CODE 0007B1H 000C1FH 00046FH BYTE UNIT CODE ?PR?PRINTF?PRINTF 000C20H 001045H 000426H BYTE UNIT CODE ?CO?MEASURE 001046H 001394H 00034FH BYTE UNIT CODE ?PR?SCANF?SCANF 001395H 001527H 000193H BYTE UNIT CODE ?PR?MAIN?MEASURE 001528H 00160DH 0000E6H BYTE UNIT CODE ?PR??C?ATOF??C?ATOF 00160EH 0016D8H 0000CBH BYTE UNIT CODE ?PR?TIMER0?MEASURE . . . * * * * * * * * * * * X D A T A M E M O R Y * * * * * * * * * * * * * 000000H 001FF7H 001FF8H BYTE UNIT XDATA ?XD?MEASURE Overlay MapThe overlay-map displays the structure of the program and the location of the bit, data, idata, pdata, and xdata segments of each function. It is textual representation of the call tree for the program. The NOMAP directive suppresses output of this table. Bit, data, idata, pdata, and xdata variables are part of the BIT_GROUP, DATA_GROUP, IDATA_GROUP, PDATA_GROUP, and XDATA GROUP respectively. OVERLAY MAP OF MODULE: Measure (MEASURE) FUNCTION/MODULE BIT_GROUP DATA_GROUP IDATA_GROUP --> CALLED FUNCTION/MODULE START STOP START STOP START STOP ============================================================================ ?C_C51STARTUP ----- ----- ----- ----- ----- ----- +--> ?PR?MAIN?MEASURE +--> ?C_INITSEG The ?C_C51STARTUP segment is the startup code. In this example, it calls the C runtime initialization routine (?C_INITSEG) and the main C function (?PR?MAIN?MEASURE). It requires no bit, data, or idata variable space. MAIN/MEASURE ----- ----- 0022H 0024H 0011H 001FH +--> ?PR?CLEAR_RECORDS?MEASURE +--> ?CO?MEASURE +--> ?PR?PRINTF?PRINTF +--> ?PR?_GETLINE?GETLINE +--> ?PR?_TOUPPER?TOUPPER +--> ?PR?MEASURE +--> ?PR?_READ_INDEX?MEASURE +--> ?PR?_GETKEY?_GETKEY +--> ?PR?MEASURE_DISPLAY?MCOMMAND +--> ?PR?_SET_TIME?MCOMMAND +--> ?PR?_SET_INTERVAL?MCOMMAND The main C function requires 3 bytes of data space and 15 bytes of idata space. It calls the listed segments. Most of these segments are program segments (?PR?). However, the ?CO?MEASURE segment is a constant segment. This means that main accesses some constant data stored in code space (probably a string or lookup table). *** NEW ROOT ************************* TIMER0/MEASURE ----- ----- ----- ----- ----- ----- +--> ?PR?SAVE_CURRENT_MEASUREMENTS?MEASURE SAVE_CURRENT_MEASUREMENTS/MEASURE ----- ----- ----- ----- ----- ----- +--> ?PR?MEASURE As new program roots are discovered, they are indicated in the overlay map. In this case, the timer 0 interrupt service routine creates a new overlay analysis root so that the interrupt routine is not overlaid with the main program. Interbank Call TableCode banking applications contain an Interbank Call Table that lists all functions called from different code banks. INTERBANK CALL TABLE OF MODULE: Bank_ex1 (C_ROOT) ADDRESS FUNCTION NAME ------------------------ 04CDH FUNC2A 04D2H FUNC2B 04D7H _ID_CALL 04DCH FUNC0 04E1H FUNC1 04E6H FUNC2 The Address specified is the entry address used by the linker for function calls from different code banks, the common area, or indirect function calls (via function pointer). Public SymbolsThe public symbols table displays the value, name, class, and type for public symbols. The NOPUBLICS directive may be used to suppress output of public symbols in the listing file.
PUBLIC SYMBOLS OF MODULE: Measure (MEASURE)
VALUE CLASS TYPE PUBLIC SYMBOL NAME
=================================================
00000031H DATA --- ?_PRINTF?BYTE
0000002EH DATA --- ?_SCANF?BYTE
00000031H DATA --- ?_SPRINTF?BYTE
0000002EH DATA --- ?_SSCANF?BYTE
00000010H DATA --- ?_UNGETCHAR?BYTE
00000020H.6 BIT --- ?C?ATOFFIRSTCALL
01000357H CODE --- ?C?CASTF
01000767H CODE --- ?C?CCASE
00000021H.6 BIT --- ?C?CHARLOADED
0100069AH CODE --- ?C?CLDOPTR
01000681H CODE --- ?C?CLDPTR
00000000H NUMBER --- ?C?CODESEG
0100065BH CODE --- ?C?COPY
010006C7H CODE --- ?C?CSTPTR
01000323H CODE --- ?C?FCASTC
0100031EH CODE --- ?C?FCASTI
01000319H CODE --- ?C?FCASTL
01000015H CODE --- ?C?FPADD
0100153BH CODE --- ?C?FPATOF
010002AEH CODE --- ?C?FPCMP
010002ACH CODE --- ?C?FPCMP3
01000407H CODE --- ?C?FPCONVERT
0100020FH CODE --- ?C?FPDIV
0100038EH CODE --- ?C?FPGETOPN2
01000106H CODE --- ?C?FPMUL
010003C3H CODE --- ?C?FPNANRESULT
0100050AH CODE --- ?C?FPNEG
.
.
.
*SFR* 000000D0H.6 DATA BIT AC
*SFR* 000000E0H DATA BYTE ACC
*SFR* 000000D8H DATA BYTE ADCON
*SFR* 000000D9H DATA BYTE ADDAT
*SFR* 000000D8H.3 DATA BIT ADM
*SFR* 000000F0H DATA BYTE B
*SFR* 000000D8H.7 DATA BIT BD
*SFR* 000000D8H.4 DATA BIT BSY
*SFR* 000000C1H DATA BYTE CCEN
*SFR* 000000C3H DATA BYTE CCH1
*SFR* 000000C5H DATA BYTE CCH2
*SFR* 000000C7H DATA BYTE CCH3
*SFR* 000000C2H DATA BYTE CCL1
Symbol TableThe symbol table contains symbolic information obtained from the input modules. Included are the value, representation, class, type, and name for all symbols.
SYMBOL TABLE OF MODULE: Measure (MEASURE)
VALUE REP CLASS TYPE SYMBOL NAME
====================================================
--- MODULE --- --- MEASURE
00000062H PUBLIC DATA --- interval
0000005FH PUBLIC DATA WORD savefirst
0000005BH PUBLIC DATA --- setinterval
02000000H PUBLIC XDATA --- save_record
00000059H PUBLIC DATA WORD sindex
0000004EH PUBLIC DATA --- current
01001036H PUBLIC CODE --- ERROR
01001395H PUBLIC CODE --- main
0100160EH PUBLIC CODE --- timer0
000000C8H SFRSYM DATA BIT T2I0
000000C3H SFRSYM DATA BYTE CCH1
00000080H SFRSYM DATA BYTE P0
000000C8H.1 SFRSYM DATA BIT T2I1
000000C5H SFRSYM DATA BYTE CCH2
00000090H SFRSYM DATA BYTE P1
000000C7H SFRSYM DATA BYTE CCH3
000000A0H SFRSYM DATA BYTE P2
000000B0H SFRSYM DATA BYTE P3
000000B0H.4 SFRSYM DATA BIT T0
000000D0H.6 SFRSYM DATA BIT AC
.
.
.
01001A5DH BLOCK CODE --- LVL=0
01001A5DH LINE CODE --- #69
01001A5DH LINE CODE --- #70
01001A74H LINE CODE --- #71
01001A83H LINE CODE --- #72
01001A8DH LINE CODE --- #73
01001AA3H LINE CODE --- #74
01001AA3H LINE CODE --- #75
--- BLOCKEND --- --- LVL=0
.
.
.
--- MODULE --- --- MCOMMAND
010016D9H PUBLIC CODE --- _set_interval
01001933H PUBLIC CODE --- _set_time
00000025H PUBLIC DATA BYTE ?measure_display?BYTE
01001A01H PUBLIC CODE --- measure_display
000000C8H SFRSYM DATA BIT T2I0
000000C3H SFRSYM DATA BYTE CCH1
00000080H SFRSYM DATA BYTE P0
000000C8H.1 SFRSYM DATA BIT T2I1
000000C5H SFRSYM DATA BYTE CCH2
00000090H SFRSYM DATA BYTE P1
000000C7H SFRSYM DATA BYTE CCH3
000000A0H SFRSYM DATA BYTE P2
000000B0H SFRSYM DATA BYTE P3
000000B0H.4 SFRSYM DATA BIT T0
000000D0H.6 SFRSYM DATA BIT AC
000000C2H SFRSYM DATA BYTE CCL1
000000E8H SFRSYM DATA BYTE P4
000000B0H.5 SFRSYM DATA BIT T1
000000C4H SFRSYM DATA BYTE CCL2
Function MasksFunction masks are created when global register optimization is enabled by the REGFILE directive. The register mask is a 16-bit number that indicates which registers are used by a function. Each bit in the mask refers to one register. The encoding for the register mask is as follows:
Special values of the register mask may be used as well:
For example, a register mask value of 0x80F0 indicates that the function uses R0, R1, R2, and R3. FUNCTION REGISTER MASKS FUNCTION . . . . . . . REG MASK ------------------------------- SERIAL_INIT. . . . . . @0xc000 _ISSPACE . . . . . . . @0xf000 _PUTBUF. . . . . . . . @0xf082 _TOUPPER . . . . . . . @0xf001 Cross ReferenceA cross reference listing is generated when the IXREF directive is specified on the linker command line. It includes the section name as well as its representation (LABEL, VAR, CONST), TGroup, the name of the module in which it is defined and all modules in which it is accessed. INTER-MODULE CROSS-REFERENCE LISTING NAME . . . . . . . . . CLASS MODULE NAMES ============================================ ?_PRINTF?BYTE. . . . . DATA PRINTF MCOMMAND MEASURE ?_SCANF?BYTE . . . . . DATA SCANF ?_SPRINTF?BYTE . . . . DATA PRINTF ?_SSCANF?BYTE. . . . . DATA SCANF MCOMMAND MEASURE ?_UNGETCHAR?BYTE . . . DATA GETCHAR UNGETC ?C?ATOFFIRSTCALL . . . BIT ?C?ATOF SCANF ?C?CASTF . . . . . . . CODE ?C?CASTF MCOMMAND ?C?CCASE . . . . . . . CODE ?C?CCASE MEASURE PRINTF SCANF ?C?CHARLOADED. . . . . BIT GETCHAR UNGETC ?C?CLDOPTR . . . . . . CODE ?C?CLDOPTR PRINTF ?C?CLDPTR. . . . . . . CODE ?C?CLDPTR PRINTF SCANF ?C?CODESEG . . . . . . NUMBER ** BL51 GENERATED ** ?C?COPY. . . . . . . . CODE ?C?COPY MCOMMAND MEASURE ?C?CSTPTR. . . . . . . CODE ?C?CSTPTR PRINTF SCANF ?C?FCASTC. . . . . . . CODE ?C?FCAST ?C?ATOF MCOMMAND ?C?FCASTI. . . . . . . CODE ?C?FCAST ?C?FCASTL. . . . . . . CODE ?C?FCAST Program SizeProgram size information is output near the end of the listing file. The size of various memory areas as well as constant and code space are output. Program Size: data=102.7 xdata=8184 const=0 code=7058 Total program ROM size is obtained by adding the const and code sizes. Warnings and ErrorsProblems encountered while linking a program generate errors and warnings that are output to the screen and to the map file. BL51 RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) | ||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||