Path: utzoo!attcan!uunet!husc6!mailrus!ncar!noao!asuvax!stjhmc!p6.f18.n114.z1.fidonet.org!will.summers From: will.summers@p6.f18.n114.z1.fidonet.org (will summers) Newsgroups: comp.lang.c Subject: Re: Argument Passing in C Message-ID: <705.2339B3D8@stjhmc.fidonet.org> Date: 21 Sep 88 23:33:42 GMT Sender: ufgate@stjhmc.fidonet.org (newsout1.24) Organization: FidoNet node 1:114/18.6 - Iasd Eng Bbs, Phoenix Az Lines: 27 In message <69210@sun.uucp> swilson%thetone@Sun.COM (Scott Wilson) writes: > > Can someone explain to me what the difference is between a hardware stack > and a software stack? I worked on a C compiler project once where > one person said the target machine "doesn't even have a hardware stack." > I asked what the difference was between the target machine and, say, a > 68000. > The answer was the 68000 had a stack because it supported addressing modes > like "movl d7,@sp-" whereas the target machine required you to use two > instructions, first a move then an explicit decrement of the stack pointer. Interesting point. Methinks a "proper" distinction would place any stack implemented in the store in the software category. Some kind of on-chip or auxilliary-chip stack would seem to me to be necessary to qualify as a "hardware" stack. A possible exception would be an implementation where the stack storage had a completely separate address space. It's semantics, but seems to me that for a distinction there should be a difference, and one vs. two instructions seems too narrow a difference... \/\/ill -- St. Joseph's Hospital/Medical Center - Usenet <=> FidoNet Gateway Uucp: ...{gatech,ames,rutgers}!ncar!noao!asuvax!stjhmc!18.6!will.summers