[Coco] cprep19a.lzh upload
Lothan
lothan at newsguy.com
Thu May 26 21:11:05 EDT 2011
If I remember correctly, string constants are kept pretty much wherever they
are defined in the code, so the location depends on the order of the
modules/libraries being linked. I think cstart.r is linked first by cc1/cc2
so it's right after the module header.
Globaql initialization data for other data types (and for some strings) is
stored at the tail end of the executable. I'm looking at the disassembly for
ansifront for example and I see "noname.c" is is in the initialization
section at the end of the executable while all the other strings are in the
middle of the code.
Look in cstart.a and you'll see at csta10 it copies the dp-data (direct page
initialization data) from the executable into the direct page. At csta15 it
copies the non-dp data from the end of the executable to the memory area
right after the direct page. It then clears the bss data, relocates the
data-text references (pointers to stuff in the executable module like
function pointers and pointers to string constants), relocates the data-data
references (pointers to stuff in the data area like pointers to structs),
resets the stack, and processes the command-line arguments. The references
are relocated because the C compiler/linker stores the pointers based on
zero offsets, so it has to calculate the final addresses based on the
location of the module and data area in memory.
-----Original Message-----
From: Willard Goosey
Sent: Thursday, May 26, 2011 4:57 PM
To: CoCoList for Color Computer Enthusiasts
Subject: Re: [Coco] cprep19a.lzh upload
On Thu, May 26, 2011 at 08:13:08AM -0700, Stephen H. Fischer wrote:
>
> I now wonder how to make sure it is near the start of the binary. Part of
> Globals?
I believe global initialized data is right after the module header, yes.
That starts getting to be a complicated question about how rlink does
its magic, and I've never gone there. ;-)
Willard
--
Willard Goosey goosey at sdc.org
Socorro, New Mexico, USA
I search my heart and find Cimmeria, land of Darkness and the Night.
-- R.E. Howard
--
Coco mailing list
Coco at maltedmedia.com
http://five.pairlist.net/mailman/listinfo/coco
More information about the Coco
mailing list