| ??? 11/21/06 13:18 Read: times |
#128350 - like that snippet? Responding to: ???'s previous message |
> It looks from your snippet like the linker does output symbols for the beginning and end of each segment.
No only beginning and length of each segment. > So, the next question is: can you create your own segments You can. Although currently not without falling back to inline assembly. Feature request #1600296 which was filed very shortly before your post is related. -dummy.c-------8<--------------------
void dummy_eo_xdata(void) __naked
{
__asm
.area XSEG_DUMMY (XDATA)
_eo_xdata:: ; nothing alloc'd!
__endasm;
}
-main.c-------8<----------------------
extern unsigned char xdata eo_xdata; /* or void or an array[0] */
unsigned char xdata another_var[0x234];
void main (void)
{
volatile unsigned int t = (unsigned int)&eo_xdata;
}
then on the command line: sdcc -c dummy.c sdcc -c main.c sdcc main.rel dummy.rel gives (file main.rst) :
128 ; main.c:6: volatile unsigned int t = (unsigned int)&eo_xdata;
129 ; genCast
0062 75 08 34 130 mov _main_t_1_1,#_eo_xdata
0065 75 09 02 131 mov (_main_t_1_1 + 1),#(_eo_xdata >> 8)
|



