Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #13458

Re: A portable stack in C

From Richard Damon <news.x.richarddamon@xoxy.net>
Newsgroups comp.lang.c
Subject Re: A portable stack in C
Date 2011-11-15 23:07 -0500
Organization A noiseless patient Spider
Message-ID <j9vcth$loo$1@dont-email.me> (permalink)
References <4ec14700$0$1387$4fafbaef@reader2.news.tin.it> <j3r3c7tl1v45qjvee173t8759n1074h4ll@4ax.com> <j9t7gd$45e$1@speranza.aioe.org> <j9tdlo$669$1@dont-email.me> <j9temn$o6u$1@speranza.aioe.org>

Show all headers | View raw


On 11/15/11 5:25 AM, jacob navia wrote:

>> Clearly one without a stack, perhaps some lowly controller chip.
>>
> 
> Impossible. There isn't a CALL instruction then. It is impossible
> to implement a CALL without a conceptual stack. Yes, you can "push"
> your return address into some register but this is conceptually a stack!
> 
> 

I have used several machines with the equivalent of a CALL instruction
and no built in stack.

On one, the call instruction deposited the return address into the
location pointed to by the call instruction, and began execution at the
next word of memory. (This machine of course did not have the concept of
"Rom", all memory was Read/Write, (actually Core)).  Typically the
subroutine would be written with the Word before the entry point
containing a "Jump Far" instruction, which took 2 words, the second
being the address to jump to.

A second machine a CALL instruction was described as a Branch & Link
instruction, where prior to jumping to the specified address, the return
address was moved into a "link" register. (Interrupts needed their own
version of this register). If a subroutine needed to call another
subroutine, it needed to save this register before making the call.

Compilers for these machines would use an extension to the language to
mark functions that might be recursive, and those would use a special
software based stack to save any needed data, like the return address.
No recursive functions would use static addresses for this. Of course to
be able to claim to be ISO Standard C, they would need to assume that
all functions were recursive, but then I was using these machines before
C90 was a standard.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-14 17:54 +0100
  Re: A portable stack in C Barry Schwarz <schwarzb@dqel.com> - 2011-11-14 20:55 -0800
    Re: A portable stack in C jacob navia <jacob@spamsink.net> - 2011-11-15 09:22 +0100
      Re: A portable stack in C Ike Naar <ike@iceland.freeshell.org> - 2011-11-15 09:00 +0000
        Re: A portable stack in C jacob navia <jacob@spamsink.net> - 2011-11-15 11:26 +0100
      Re: A portable stack in C "BartC" <bc@freeuk.com> - 2011-11-15 10:05 +0000
        Re: A portable stack in C jacob navia <jacob@spamsink.net> - 2011-11-15 11:25 +0100
          Re: A portable stack in C "BartC" <bc@freeuk.com> - 2011-11-15 11:08 +0000
          Re: A portable stack in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-11-15 11:45 +0000
            Re: A portable stack in C jacob navia <jacob@spamsink.net> - 2011-11-15 12:57 +0100
              Re: A portable stack in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-11-15 12:39 +0000
                Re: A portable stack in C jacob navia <jacob@spamsink.net> - 2011-11-15 14:26 +0100
                Re: A portable stack in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-11-15 15:31 +0000
                Re: A portable stack in C Keith Thompson <kst-u@mib.org> - 2011-11-15 12:53 -0800
                Re: A portable stack in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-11-15 21:15 +0000
                Re: A portable stack in C Keith Thompson <kst-u@mib.org> - 2011-11-15 14:29 -0800
                Re: A portable stack in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-11-15 22:59 +0000
                Re: A portable stack in C James Kuyper <jameskuyper@verizon.net> - 2011-11-15 17:30 -0500
                Re: A portable stack in C Willem <willem@toad.stack.nl> - 2011-11-15 22:33 +0000
                Re: A portable stack in C Keith Thompson <kst-u@mib.org> - 2011-11-15 15:07 -0800
                Re: A portable stack in C Seebs <usenet-nospam@seebs.net> - 2011-11-15 22:37 +0000
                Re: A portable stack in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-11-15 23:01 +0000
              Re: A portable stack in C "BartC" <bc@freeuk.com> - 2011-11-15 18:45 +0000
            Re: A portable stack in C Keith Thompson <kst-u@mib.org> - 2011-11-15 12:41 -0800
          Re: A portable stack in C Richard Damon <news.x.richarddamon@xoxy.net> - 2011-11-15 23:07 -0500
            Re: A portable stack in C Keith Thompson <kst-u@mib.org> - 2011-11-15 20:18 -0800
            Re: A portable stack in C Robert Wessel <robertwessel2@yahoo.com> - 2011-11-15 22:53 -0600
              Re: A portable stack in C "BartC" <bc@freeuk.com> - 2011-11-16 12:00 +0000
                Re: A portable stack in C falk@rahul.net (Edward A. Falk) - 2011-11-16 16:08 +0000
              Re: A portable stack in C David Thompson <dave.thompson2@verizon.net> - 2012-01-19 02:41 -0500
      Re: A portable stack in C Thomas David Rivers <rivers@dignus.com> - 2011-11-15 11:21 -0500
      Re: A portable stack in C Barry Schwarz <schwarzb@dqel.com> - 2011-11-15 17:53 -0800
    Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-15 19:21 +0100
      Re: A portable stack in C Barry Schwarz <schwarzb@dqel.com> - 2011-11-15 17:53 -0800
        Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-18 08:13 +0100
  Re: A portable stack in C Rui Maciel <rui.maciel@gmail.com> - 2011-11-15 10:14 +0000
    Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-15 19:20 +0100
  Re: A portable stack in C Acid Washed China Blue Jeans <chine.bleu@yahoo.com> - 2011-11-15 08:13 -0800
  Re: A portable stack in C Kaz Kylheku <kaz@kylheku.com> - 2011-11-15 16:27 +0000
    Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-15 19:21 +0100
    Re: A portable stack in C Keith Thompson <kst-u@mib.org> - 2011-11-15 13:19 -0800
  Re: A portable stack in C blmblm@myrealbox.com <blmblm.myrealbox@gmail.com> - 2011-11-17 15:45 +0000
    Re: A portable stack in C John Gordon <gordon@panix.com> - 2011-11-17 15:56 +0000
    Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-17 18:02 +0100
      Re: A portable stack in C "BartC" <bc@freeuk.com> - 2011-11-17 17:35 +0000
        Re: A portable stack in C Vincenzo Mercuri <vincenzo.mercuri@yahoo.it> - 2011-11-17 18:45 +0100
        Re: A portable stack in C Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-18 00:27 -0800
          Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-18 10:40 +0100
            Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-20 07:22 +0100
            Re: A portable stack in C Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-21 00:38 -0800
              Re: A portable stack in C "Jo" <none@none.none> - 2011-11-21 03:44 -0600
                Re: A portable stack in C Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-11-21 13:00 +0200
                Re: A portable stack in C "Jo" <none@none.none> - 2011-11-21 06:07 -0600
              Re: A portable stack in C "Jo" <none@none.none> - 2011-11-21 03:50 -0600
              Re: A portable stack in C "Jo" <none@none.none> - 2011-11-21 07:48 -0600
              Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-21 20:11 +0100
          Re: A portable stack in C "BartC" <bc@freeuk.com> - 2011-11-18 12:47 +0000
          Re: A portable stack in C "Jo" <none@none.none> - 2011-11-18 23:31 -0600
      Re: A portable stack in C blmblm@myrealbox.com <blmblm.myrealbox@gmail.com> - 2011-11-18 14:45 +0000
        Re: A portable stack in C James Kuyper <jameskuyper@verizon.net> - 2011-11-18 10:14 -0500
        Re: A portable stack in C Keith Thompson <kst-u@mib.org> - 2011-11-18 12:20 -0800
          Re: A portable stack in C blmblm@myrealbox.com <blmblm.myrealbox@gmail.com> - 2011-11-19 17:23 +0000
            Re: A portable stack in C Seebs <usenet-nospam@seebs.net> - 2011-11-19 18:49 +0000
              Re: A portable stack in C "Jo" <none@none.none> - 2011-11-19 22:41 -0600
              Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-20 07:27 +0100
                Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-21 20:12 +0100
            Re: A portable stack in C "io_x" <a@b.c.invalid> - 2011-11-20 07:50 +0100
          Re: A portable stack in C "Jo" <none@none.none> - 2011-11-21 01:24 -0600
            Re: A portable stack in C Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-11-21 05:22 -0800
              Re: A portable stack in C "Jo" <none@none.none> - 2011-11-22 03:31 -0600
  Re: A portable stack in C 88888 Dihedral <dihedral88888@googlemail.com> - 2011-11-21 06:38 -0800

csiph-web