Paul,

>  > [EMAIL PROTECTED] schrieb:
>  > > Internal RAM layout:
>  > >       0 1 2 3 4 5 6 7 8 9 A B C D E F
>  > > 0x00:|0|0|0|0|0|0|0|0|b|b|b|b|c|Q|Q|Q|
>  > > 0x10:|Q|Q|Q|Q|Q|Q| | | | | | | | | | |
>  > > 0x20:|B|T|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
>  > > 0x30:|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
>  > > 0x40:|a|a|a|a|a|a|S|S|S|S|S|S|S|S|S|S|
>  > > 0x50:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
>  > > 0x60:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
>  > > 0x70:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
>  > > 0x80:| | | | | | | | | | | | | | | | |
>  > > 0x90:| | | | | | | | | | | | | | | | |
>  > > 0xa0:| | | | | | | | | | | | | | | | |
>  > > 0xb0:| | | | | | | | | | | | | | | | |
>  > > 0xc0:| | | | | | | | | | | | | | | | |
>  > > 0xd0:| | | | | | | | | | | | | | | | |
>  > > 0xe0:| | | | | | | | | | | | | | | | |
>  > > 0xf0:| | | | | | | | | | | | | | | | |
>  > > 0-3:Reg Banks, T:Bit regs, a-z:Data, B:Bits, Q:Overlay, I:iData, 
> S:Stack, 
>  > A:Absolute
>  > > 
>  > > Stack starts at: 0x46 (sp set to 0x45) with 58 bytes available.
>  > > 
>  > > Other memory:
>  > >    Name             Start    End      Size     Max     
>  > >    ---------------- -------- -------- -------- --------
>  > >    PAGED EXT. RAM                         0      256   
>  > >    EXTERNAL RAM     0xf400   0xf741     834     2048   
>  > >    ROM/EPROM/FLASH  0x0000   0xf3ea   62443    62464   
>  > 
>  > another note, there is a gap within the (i)data memory
>  > from 0x16 to 0x1f. If you can split the area marked as 'a'
>  > f.e. into a region of 10 bytes and another region with the
>  > rest of the bytes then the linker can allocate
>  > the data consecutively. Would give you 10 bytes more
>  > stack space.
> 
> i wish.  thanks for the tip on locating them.  those bytes are
> all internally allocated "local" vars.  i can work on simplifying
> the code, but unless i can move something like _getV85_sloc0_1_0
> to xdata, i may be stuck with them.

As I said before each letter represents data in one 
module. So to split the area you need to split the 
module, i.e. disperse the data over several source 
files. And you cannot move sloc's to xdata because that 
defeats the purpose of moving them to data memory in the 
first place.

> the other thing that would help (i think) would be eliminating
> the B byte.  that, too, would let those addresses be used, right?
> 
> but that byte seems to be an internal thing as well -- i find it
> here, in a .asm that contains all my interrupt service routines (if
> that matters):
>     ;--------------------------------------------------------
>     ; overlayable bit register bank
>     ;--------------------------------------------------------
>           .area BIT_BANK  (REL,OVR,DATA)
>     bits:
>           .ds 1
>           b0 = bits[0]
>           b1 = bits[1]
>           b2 = bits[2]
>           b3 = bits[3]
>           b4 = bits[4]
>           b5 = bits[5]
>           b6 = bits[6]
>           b7 = bits[7]
> 
> does that look familiar?

Actually that is the T byte. And you would have to loose 
both the B and the T byte.

> 
> paul

Maarten

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to