Symbol Capacities Of MCS® 51 Development Software
The output of MCS-51 development software is formatted in Intel OMF-51 (object module format).
Such files not only contain information regarding code and data assignments, but also carry
information regarding public/external fixups and debug objects. Specific limitations to the OMF-51
are listed below:
OMF51 Limits Per Module |
Absolute segments |
|
Unspecified |
Relocatable segments |
|
255 |
Publics |
|
Unspecified |
Externals |
|
256 |
Local symbols and line numbers |
|
Unspecified |
The restriction of 256 external declarations per module can sometimes pose problems
for programmers who use a single global include file which contains all external
declarations for all modules in a program. With this technique, every module makes
the same external declarations regardless if the symbols are actually referenced in
the code or not. But due to the 256 limitation, it is sometimes necessary to divide
the single include file into multiple files to fit specific modules. The XREF symbol
table of ASM51 list files is useful in determining which externals are declared, but
not actually referenced in code. The XREF feature of PL/M51 is not quite as helpful.
MBOL TABLE SIZES FOR ASM51, PL/M51, AND RL51
Symbol capacity in MCS-51 languages is proportional to name length. Using symbol names
short in length will allow for usage of more symbols. Symbols are stored in the host
machine's internal memory. Disk-based virtual symbols tables are not used.
ASM51
The symbol table capacity for ASM51 in version 2.3 is limited to about 1300 six-character
symbols. For programs assembled with the NOMACRO control, the symbol table can contain
2400 six-character symbols. By specifying a percent value with the MACRO control, percent
symbol table space can be balanced between the assembler and macro-assembler.
PL/M51
PL/M51 version 1.4 has a symbol table capacity of approximately 1600 ten-character names.
Included in this count are all 'literal' definitions.
RL51
RL51 version 3.2 can support up to about 10,000 ten-character symbols with 512K DOS memory
and 15,000 ten-character symbols with 640K DOS memory.
CONCLUSION
Although symbol capacities of MCS-51 development software can sometimes pose restrictions,
most problems can be avoided by using modular program techniques. RL51 has a large symbol
capacity and should be used to combine program subsections (modules) together along with
their symbols. For ASM51, this means dividing up tasks into smaller functional units and
using relocatable segments. The same methodology applies to PL/M51 as well. But keep in
mind that with PL/M51 overlaying of data and bit variables is maximized when modules outside
the main module never call each other. Such calls are deduced by RL51 via public and external
references.
|