comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Pascal Calling Convention
Date: Mon, 28 Mar 2011 15:52:56 -0400
Date: 2011-03-28T15:52:56-04:00	[thread overview]
Message-ID: <wcck4fjc99j.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: imm75p$53o$1@munin.nbi.dk

"Randy Brukardt" <randy@rrsoftware.com> writes:

> I can't speak for Keith, but most of the hardware architectures that I've 
> worked on have had at least some architectual support for a "hardware" 
> stack. Not only the Push/Pop instructions of the X86 for instance, but also 
> the special SS stack segment register.

True, but nobody uses the SS register in any nontrivial way, anymore.
The segmentation stuff of 8086 is pretty much vestigial at this point.

>...The 68K also had a dedicated stack 
> register and some special instructions for call/ret. Even the Unisys U2200 
> mainframe had a stack segment and special instructions for call/ret and 
> stack frames.
>
> I agree that these things aren't that different than add or subtract, but 
> given the way that they're documented (as a hardware-supported stack in each 
> case), I think it is pretty obvious that these things exist. (Inventing your 
> own terminology and ignoring the standard view of an architecture is a good 
> way to confuse everyone who talks to you...)

But we're not talking about "an architecture".  We're talking about
the implementation of Ada (or any other language that has LIFO call
semantics -- no full closures, continuations...).  On ANY architecture.

As Adam pointed out in another reply, many machines have a stack pointer
register, but purely as a software convention.  On such machines, one
still usually implements the stack as a contiguous region of memory,
with the SP pointing to the top.  I don't want to call that thing
a "hardware stack" -- rather, "contiguous stack" or something.
(Even there, GNAT has a secondary stack, which is a linked list
in at least some cases.  Not a linked list of call frames, but
a linked list of memory blocks, each of which can contain
multiple call frames.)

And somebody (Hyman, I think) pointed to some IBM machines where the
stack is normally implemented as a linked list.  Still a stack,
in my book.

"Stack" is a pretty well-understood term in computer science,
and I think if an x86-centric person insists that "the stack"
must be a certain way based on the hardware/architecture,
they're the one inventing confusing terminology.
Keith is trying to clarify, by calling that contiguous thing
a "hardware stack", but I'm saying the word "hardware" doesn't
capture the intended meaning.

- Bob



  parent reply	other threads:[~2011-03-28 19:52 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-23 21:37 Pascal Calling Convention Shark8
2011-03-23 23:25 ` Yannick Duchêne (Hibou57)
2011-03-24  0:24   ` Randy Brukardt
2011-03-24  0:43     ` Yannick Duchêne (Hibou57)
2011-03-24  2:04       ` Shark8
2011-03-25 15:40         ` Yannick Duchêne (Hibou57)
     [not found]       ` <F8mdnYCca6tRJBfQnZ2dnUVZ_s-dnZ2d@earthlink.com>
2011-03-24 19:20         ` Keith Thompson
2011-03-25 16:04           ` Robert A Duff
2011-03-25 17:02             ` Hyman Rosen
2011-03-25 17:09               ` Robert A Duff
2011-03-25 17:35                 ` Hyman Rosen
2011-03-26 19:51                   ` Robert A Duff
2011-03-25 17:51             ` Keith Thompson
2011-03-26 20:46               ` Robert A Duff
2011-03-27  2:24                 ` Randy Brukardt
2011-03-28 15:41                   ` Adam Beneschan
2011-03-28 19:52                   ` Robert A Duff [this message]
2011-03-29  2:32                     ` Randy Brukardt
2011-03-29  6:06                       ` Shark8
2011-03-29 23:45                         ` Randy Brukardt
2011-03-29 19:19                       ` Robert A Duff
2011-03-30  0:02                         ` Randy Brukardt
2011-03-30 12:40                           ` Robert A Duff
2011-03-30 19:40                             ` Randy Brukardt
2011-03-30 20:56                               ` tmoran
2011-03-30 22:34                                 ` Robert A Duff
2011-03-31 21:00                                   ` Randy Brukardt
2011-03-28 20:29                 ` Hyman Rosen
2011-03-28 21:16                   ` Adam Beneschan
2011-03-28 21:26                     ` Hyman Rosen
2011-03-28 22:08                       ` Adam Beneschan
2011-03-28 23:47                         ` Georg Bauhaus
2011-03-29 12:23                           ` stefan-lucks
2011-03-29 13:10                             ` Hyman Rosen
2011-03-30 13:42                             ` Phil Clayton
2011-03-31  7:40                               ` Phil Clayton
2011-03-29  2:48                         ` Hyman Rosen
2011-03-29 18:30                           ` Robert A Duff
2011-03-29 23:25                             ` Adam Beneschan
2011-03-30 12:50                               ` Robert A Duff
2011-03-30 14:47                                 ` Adam Beneschan
2011-03-30 18:10                                   ` Robert A Duff
2011-03-29  3:01                         ` Hyman Rosen
2011-03-29 18:22                           ` Robert A Duff
2011-03-26 21:30           ` Florian Weimer
2011-03-27 16:18             ` Robert A Duff
2011-03-27 16:38               ` Florian Weimer
2011-03-27 16:56                 ` Robert A Duff
2011-03-24  2:15   ` Shark8
2011-03-24  0:38 ` ytomino
2011-03-24  2:23   ` Shark8
2011-03-24 21:29 ` Gautier write-only
2011-03-25 12:47 ` Marco
2011-03-25 15:38   ` Yannick Duchêne (Hibou57)
2011-03-26  8:39     ` ObjectAda [was: Pascal Calling Convention] Gautier write-only
2011-03-26 14:05       ` Marco
2011-03-26 21:58         ` Gautier write-only
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox