Hi, After compiling my project, following library functions are listed in the m51 file. C:\KEIL\C51\LIB\C51L.LIB (?C_INIT) C:\KEIL\C51\LIB\C51L.LIB (?C?COPY) C:\KEIL\C51\LIB\C51L.LIB (?C?CLDPTR) C:\KEIL\C51\LIB\C51L.LIB (?C?CLDOPTR) C:\KEIL\C51\LIB\C51L.LIB (?C?CSTPTR) C:\KEIL\C51\LIB\C51L.LIB (?C?CSTOPTR) Where can I get the sizes of these functions?. with regards Rajesh
Why do you want to know? I'm sure you could get at least a good estimate from the Map file; eg, this is from the MEasure example project:
LINK MAP OF MODULE: measure (MEASURE) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" REG 0008H 0008H ABSOLUTE "REG BANK 1" DATA 0010H 0001H UNIT ?DT?GETCHAR IDATA 0011H 000FH UNIT _IDATA_GROUP_ BIT 0020H.0 0001H.3 UNIT _BIT_GROUP_ BIT 0021H.3 0000H.3 UNIT ?BI?MEASURE BIT 0021H.6 0000H.1 UNIT ?BI?GETCHAR 0021H.7 0000H.1 *** GAP *** DATA 0022H 002CH UNIT _DATA_GROUP_ DATA 004EH 0014H UNIT ?DT?MEASURE IDATA 0062H 0001H UNIT ?STACK * * * * * * * X D A T A M E M O R Y * * * * * * * XDATA 0000H 01FFH UNIT ?XD?MEASURE * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE CODE 0003H 0005H UNIT ?PR?GETCHAR?UNGETCHAR 0008H 0003H *** GAP *** CODE 000BH 0003H ABSOLUTE CODE 000EH 07A3H UNIT ?C?LIB_CODE CODE 07B1H 046FH UNIT ?PR?PRINTF?PRINTF
SYMBOL TABLE OF MODULE: measure (MEASURE) VALUE TYPE NAME ---------------------------------- ------- MODULE ?C?FPADD C:0015H PUBLIC ?C?FPADD C:0011H PUBLIC ?C?FPSUB ------- ENDMOD ?C?FPADD ------- MODULE ?C?FPMUL C:0106H PUBLIC ?C?FPMUL ------- ENDMOD ?C?FPMUL ------- MODULE ?C?FPCMP C:020EH PUBLIC ?C?FPCMP C:020CH PUBLIC ?C?FPCMP3 ------- ENDMOD ?C?FPCMP ------- MODULE ?C?FCAST C:0283H PUBLIC ?C?FCASTC C:027EH PUBLIC ?C?FCASTI C:0279H PUBLIC ?C?FCASTL ------- ENDMOD ?C?FCAST ------- MODULE ?C?CASTF C:02B7H PUBLIC ?C?CASTF ------- ENDMOD ?C?CASTF ------- MODULE PRINTF D:002EH PUBLIC ?_PRINTF?BYTE D:002EH PUBLIC ?_SPRINTF?BYTE C:0813H PUBLIC _PRINTF C:080DH PUBLIC _SPRINTF ------- ENDMOD PRINTF
Thanks Neil.. "Why do you want to know?" I would like to analyze how much memory is taking each individual module. If library function accupies more memory, I am planning to implement in assembly. In your example, ?C?LIB_CODE size is 07A3H. But, what is the code sixe of ?C?FPMUL?. Value (C:0106H) means what ?. Thanks in advance Rajesh
"If library function accupies more memory, I am planning to implement in assembly." These functions are used internally by the compiler - I don't think they're documented at all for use by developers - let alone custom re-implementation! Also, you might be being a bit optimistic in assuming that you can do a better job than Keil - especially without all the necessary support & information...! :-0 " ... ?C?FPMUL?. Value (C:0106H) means what ?" The Linker deals with Addresses - so the "value" of any symbol as far as the Linker is concerned is always an Address. In the case of a function, the "value" is the entry point address of the function. You can estimate that code size of a function by looking at its start address, and the start address of the next object in code space...
View all questions in Keil forum