This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

SYMBOL TABLE LISTING shows address 0000H for multiple variables in the program

The T_T_HELLOMSG string starts with address 0000H. How can the other variables in the progam ?_MYPUTCHAR?BYTE, ?TST_PRINTF?BYTE,
P_A?141, MM_IX?251 have the same address ??

Same story with the following two variables:
T_NUM_DATA. . . . . X ADDR 001CH R SEG=?XD?TEST
BUF?148 . . . . . . X ADDR 0012H R SEG=?XD?TST_PRINTF?TEST

Any help to explain how to interpret symbol table the right way will be appreciated.



c code
======

#include <REG66x.H> /* for the intended 8051 derivative */

#include <stdio.h> /* prototype declarations for I/O functions */
#include <stdlib.h>
#include <string.h>
#include <math.h>

sfr T_SBUF = 0x99;

char xdata t_helloMsg[] = "Hello World";
char xdata t_msg[16];
char xdata t_buffer[32];
unsigned int xdata t_num_data[32];
char xdata t_msg1[64] = {
0 , 0xfe, 0x10, 0x10, 0x10, 0xfe, 0,
0xfc, 0x12, 0x12, 0x12, 0xfc, 0,
0xfe, 0x08, 0x10, 0x20, 0xfe, 0,
0x02, 0x02, 0xfe, 0x02, 0x02, 0,
0xfe, 0x12, 0x32, 0x52, 0x8c, 0,
0x7c, 0x82, 0x82, 0x82, 0x7c, 0,
0xfe, 0x08, 0x10, 0x20, 0xfe, 0,
0x0 , 0x0 , 0x82, 0xfe, 0x82, 0,
0 , 0xc6, 0x28, 0x10, 0x28, 0xc6, 0,
0 , 0x38, 0x7c, 0xf8, 0x7c, 0x38, 0,
0
};

char myputchar (char mp_c1) {
while (!TI);
TI = 0;
return (T_SBUF = mp_c1);
}

void tst_printf()
{
char xdata p_a;
int xdata p_b;
long xdata c3;
unsigned char xdata x;
unsigned int xdata y;
unsigned long xdata z;
float xdata f;
char xdata buf[] = "Test String";
char xdata *p = buf;
char xdata lcd_y[2];

}

void main (void)
{
int xdata mm_ix;
int xdata mm_j;
char m_c2;

while (1);
}

test.ls1 selected output
========================
N A M E T Y P E V A L U E ATTRIBUTES

T_HELLOMSG. . . . . X ADDR 0000H R SEG=?XD?TEST
T_MSG . . . . . . . X ADDR 000CH R SEG=?XD?TEST
T_NUM_DATA. . . . . X ADDR 001CH R SEG=?XD?TEST
T_MSG1. . . . . . . X ADDR 005CH R SEG=?XD?TEST
T_BUFFER. . . . . . X ADDR 009CH R SEG=?XD?TEST

MP_C1?040 . . . . . X ADDR 0000H R SEG=?XD?_MYPUTCHAR?TEST
?_MYPUTCHAR?BYTE. . X ADDR 0000H R SEG=?XD?_MYPUTCHAR?TEST

?TST_PRINTF?BYTE. . X ADDR 0000H R SEG=?XD?TST_PRINTF?TEST
P_A?141 . . . . . . X ADDR 0000H R SEG=?XD?TST_PRINTF?TEST
P_B?142 . . . . . . X ADDR 0001H R SEG=?XD?TST_PRINTF?TEST
C3?143. . . . . . . X ADDR 0003H R SEG=?XD?TST_PRINTF?TEST
X?144 . . . . . . . X ADDR 0007H R SEG=?XD?TST_PRINTF?TEST
Y?145 . . . . . . . X ADDR 0008H R SEG=?XD?TST_PRINTF?TEST
Z?146 . . . . . . . X ADDR 000AH R SEG=?XD?TST_PRINTF?TEST
F?147 . . . . . . . X ADDR 000EH R SEG=?XD?TST_PRINTF?TEST
BUF?148 . . . . . . X ADDR 0012H R SEG=?XD?TST_PRINTF?TEST
P?149 . . . . . . . X ADDR 001EH R SEG=?XD?TST_PRINTF?TEST
LCD_Y?150 . . . . . X ADDR 0020H R SEG=?XD?TST_PRINTF?TEST


?MAIN?BYTE. . . . . X ADDR 0000H R SEG=?XD?MAIN?TEST
?MAIN?BYTE. . . . . X ADDR 0000H R SEG=?XD?MAIN?TEST
MM_IX?251 . . . . . X ADDR 0000H R SEG=?XD?MAIN?TEST
MM_J?252. . . . . . X ADDR 0002H R SEG=?XD?MAIN?TEST
M_C2?253. . . . . . X ADDR 0004H R SEG=?XD?MAIN?TEST

0