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
