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
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...
The runtime library is implemented in assembler. I would be really surprised if you could shrink down the size any further.
You certainly can shrink the code. For example, the Keil ?C?COPY routine always links all the code required to copy from any type of memory to any other, whether or not all possibilities are used. Typically, they wouldn't be.