opensubscriber
   Find in this group all groups
 
Unknown more information…

p : palm-dev-forum@palm.lyris.net 4 May 2005 • 12:03AM -0400

Re: Where is the entry point of the applications?
by Dr. Vesselin Bontchev

REPLY TO AUTHOR
 
REPLY TO GROUP




> It has to do with the locking of the code 1 resource into memory.
> The memory manager can move unlocked resources around to compact
> the storage heap.i So the launch code looks up the code 1
> resource, pushes its start address on the stack and jumps to it
> with RTS.

Sorry, I still don't understand. Most of what you describe above is done by the OS (the Memory Manager). OK, so it finds the most appropriate place where to move the code 1 resource, locks it, and transfers control to it.

But it's not it (the Memory Manager) that does the weird push/ret stuff - it's the first few instructions of the loaded code 1 resource. Are you saying that, after loading them in memory, the memory manager *modifies* the operands of these instructions, in order to reflect the place of the code 1 resource in memory?

(This is very important to me - so far I've assumed that the contents of the code 1 resource of the normal applications is constant. If that contents - i.e., its first few instructions - constantly changes as the applications are launched, that would have serious impact on the application I'm writing.)

> The D0 register is typically used for integer type return codes
> by most 68k compilers.

Yes, I knew that. But that's the purpose of setting its least significant bit to 1 as first thing when the code is launched?

> Look at the SystemMgr.c code in the Limited PalmOS 4 sources.
> You'll find the answer to your questions there.

Uhm that's some 230 Kb of C source - any hints at which function(s) I should look? Much of the code of SysAppLaunch seems to be censored anyway... and what is left basically sets a pointer (codeP) to the memory block containing the code 1 resource and calls PrvCallWithNewStack which essentially does a JSR to it.

I can't see anything modifying the beginning of the loaded code 1 resource and I can't see why the code in that code 1 resource transfers control via push/add/rts instead of via a normal jmp.

Regards,
Vesselin
--
For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/

Bookmark with:

Delicious   Digg   reddit   Facebook   StumbleUpon

Related Messages

opensubscriber is not affiliated with the authors of this message nor responsible for its content.