Re: STACK IMPLEMENTATION



On Jul 30, 9:01 pm, Tim Wescott <t...@xxxxxxxxxxxxxxxx> wrote:
Tom Lucas wrote:
"Paul Burke" <p...@xxxxxxxxxx> wrote in message
news:5h62puF2s3seiU1@xxxxxxxxxxxxxxxxxxxxx
dk wrote:

I am trying to understand if i implement something like this in my
micro what would happen. My understanding is that i will lose the the
value of 'A'

CALL PUSH_A
.
.
.
CALL POP_A

PUSH_A : PUSH A
RET
POP_A: POP A
RET
You'll lose more than the value of A. You'll lose your job too
probably. Think about what RET does, and from that guess whether you
will ever get to call POP_A.

I don't think there will be jobs at stake - this is a homework question
I reckon. Good question to ask students though.

It's a good interview question. For assembly programming it's not out
of the realm of possibility to lose track of your stack, particularly if
you're pushing and popping data in the middle of things. Knowing what
happens would help debugging, particularly if the misalignment only
happened every once in a while as a consequence of conditional execution.

Note that on some processors the call stack is separate from the data
stack (I believe this is the case on the PIC18 and the 6805, but I
haven't picked through either of them in detail). For these processors,
pushing a register onto the data stack then returning from a subroutine
wouldn't lose you your program counter, although it could certainly mess
up your data stack if you weren't planning on that behavior.

--

Tim Wescott
Wescott Design Serviceshttp://www.wescottdesign.com

Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" gives you just what it says.
See details athttp://www.wescottdesign.com/actfes/actfes.html- Hide quoted text -

- Show quoted text -

Hi Tim,

You have hit the nail on my head. Last Friday I had this question from
my interview panel where in they tried to confuse me. As a result I
landed up here to confirm myself what I have told is correct.

Thanks TIM and PAUL. for your time.

Regards,
-Dk

.



Relevant Pages

  • Re: Local variables controversial?
    ... Calforth uses local variables, but doesn't set a policy of what's good ... of simply popping the old stack pointer off the stack frame and ... Do I understand you right to mean that the actual data in the stack frame is still on the Forth data stack? ...
    (comp.lang.forth)
  • Re: Local variables controversial?
    ... >>>Calforth uses local variables, but doesn't set a policy of what's good ... they are implemented using a stack frame. ... is still on the Forth data stack? ...
    (comp.lang.forth)
  • Re: Local variables controversial?
    ... >>locals have been declared, the system must behave as if they have been ... >>removed from the stack. ... > to the data stack. ... They need not be transparent with respect ...
    (comp.lang.forth)
  • Re: Local variables controversial?
    ... >>locals have been declared, the system must behave as if they have been ... >>removed from the stack. ... > to the data stack. ... They need not be transparent with respect ...
    (comp.lang.forth)
  • Re: Named stack items
    ... >> locals and an ordinary Forth parameter stack. ... >passed on the data stack, ... Forth ANS document locals are _not_ to be implemented ... but most of the work is done at compile time. ...
    (comp.lang.forth)