Subject:
|
Re: signals / legOS internals
|
Newsgroups:
|
lugnet.robotics.rcx.legos
|
Date:
|
Wed, 23 Jun 1999 03:28:54 GMT
|
Viewed:
|
1122 times
|
| |
| |
Lou Sortman <theball@bigfoot.com> wrote:
> Lou Sortman wrote:
> >
> > When you define a bunch of local variables (more than fit in available
> > registers), where are they? Unless you happen to know the answer, I may
> > have to do some more experimenting.
> >
> > Admittedly, it has been awhile, but the last time I was heavy into
> > assembler, it was under Unix, where in one direction (counting from SP),
> > you had any passed arguments and return addresses for previously called
> > (and not yet returned) functions. In the other direction, that was
> > where you put your local variables. So that you could call further
> > functions, the stub would adjust the SP at the beginning of the function
> > and restore it before returning.
>
> I may have answered my own question here. Since the SP is adjusted
> before anything is actually done with the local variables, the rule
> about it always pointing to the last valid datum is not violated even if
> local variables are placed after the return address.
Yes, that is correct. As for passing parameters to a function, they are
simply pushed onto the stack before the function call. Therefore, the H8
stack usually looks something like e.g. this:
function param sp+10
function param sp+8
return address sp+6
local variable sp+4
local variable sp+2
sp -> local variable sp+0
GCC complicates the picture somewhat. It maintains r6 as a frame pointer,
and references local variables and function parameters relative to that:
function param fp+6
function param fp+4
return address fp+2
fp -> prev frame ptr fp+0
local variable fp-2
local variable fp-4
sp -> local variable fp-6
That actually isn't quite all there is to say about how GCC behaves, but
the details are mostly unimportant.
-Kekoa
|
|
Message is in Reply To:
| | Re: signals / legOS internals
|
| (...) I may have answered my own question here. Since the SP is adjusted before anything is actually done with the local variables, the rule about it always pointing to the last valid datum is not violated even if local variables are placed after (...) (25 years ago, 23-Jun-99, to lugnet.robotics.rcx.legos)
|
32 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|