9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: "Eris Discordia" <eris.discordia@gmail.com>
To: "Fans of the OS Plan 9 from Bell Labs" <9fans@cse.psu.edu>
Subject: Re: [9fans] Google search of the day
Date: Fri, 15 Feb 2008 17:39:51 +0000	[thread overview]
Message-ID: <op.t6kt0pbyc6yvfe@computer> (raw)
In-Reply-To: <f8ee78396de4f03af037019a49204eee@quanstro.net>

On Fri, 15 Feb 2008 16:07:59 -0000, erik quanstrom <quanstro@quanstro.net>
wrote:

> while this is true, you are confusing calling convention and
> architecture.
> the arch puts some limits on calling convention, but there is no
> requirement
> to use the stack if you have one.
>
> you could have a calling convention that every function emits a call
> block
> with the arguments at callblock+offset and the return value(s) at
> callblock-
> offset.  doesn't matter if the arch has a stack or not.  you are free to
> ignore it.
> '

The calling conventions I have seen are the ccall, stdcall (Windows'
slightly modified version of the ccall), and pascal. All of them push
parameters on the stack.

On x86 (the only architecture I have seen), the return address is pushed
on the stack as soon as something like "call 0x04500" or "call _myfunc" is
executed. Not popping the right number of parameters before executing ret
has times over been a problem with my programs.

I understand that the push order and marshalling strategy
(by-value/by-reference) need not be the same from one language to the
other. Still, all "implementations" of languages on x86 (even FORTRAN,
according to my copy of Steven Holzner's Advanced Assembly Programming)
"have" to push their parameters on stack. I cannot see any other way to
keep the bare minimum required for a procedure call: the return address,
that is. Probably because I do not understand the notion of a "callblock."


> some languages -- notibly c -- assume a stack frame.  there are many
> languages,
> like fortran that do not.  you wouldn't notice what the compiler is
> doing in
> those languages.

You mean, if I disassemble a FORTRAN-compiled binary I will not see the
classical EBP/ESP manipulation at the beginning of each procedure with
automatic variables? I have disassembled C-compiled binaries and seen that
(actually did it so that I could do the same in my assemly programs).

----snippet----
;enter the stack frame
	push	ebp
	mov	ebp, esp
;reserve stack space for a 32-bit automatic variable
	sub	ebp, 04h

;leave the stack frame
	mov	esp, ebp
	pop	ebp
;returning requires the return address
;(the previous value of EIP) pushed on the stack
	ret
----snippet----

On Fri, 15 Feb 2008 16:43:22 -0000, maht <mattmobile@proweb.co.uk> wrote:

> The threaded / concatanative  langauges such as Forth / Joy / Cat / V
> don't use a call stack, though they still use a stack for parameter
> manipulation.

I have heard Forth is used for writing bootloaders (FreeBSD's loader was
written in Forth last time I checked). If the architecture is x86, then
issuing a call (op-code 0x9A+[ModRM]) certainly pushes EIP on the stack.
Perhaps they use jmp for branching.

> http://en.wikipedia.org/wiki/Stackless_Python
>
> Is it the same sort of stack ?

Python is an "interpreted" language (like Perl). Everything is implemented
on a semi-virtual machine (they usually call it the engine). Not sure
their stack is the same as the x86 stack segment.

"Stackless Python, or Stackless, is an experimental implementation of the
Python programming language, so named because it avoids depending on the C
call stack for its own stack. The language supports generators,
microthreads, and coroutines." --Wikipedia

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/


  parent reply	other threads:[~2008-02-15 17:39 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-13 22:03 [9fans] quote " erik quanstrom
2008-02-13 23:08 ` Pietro Gagliardi
2008-02-13 23:24 ` [9fans] Google search " dave.l
2008-02-13 23:31   ` Pietro Gagliardi
2008-02-13 23:41     ` erik quanstrom
2008-02-13 23:49       ` Pietro Gagliardi
2008-02-13 23:59     ` john
2008-02-14  0:04       ` Pietro Gagliardi
2008-02-14  6:11         ` Anant Narayanan
2008-02-15 17:39         ` Skip Tavakkolian
2008-02-14 16:45       ` Douglas A. Gwyn
2008-02-14 17:09         ` john
2008-02-14 17:27           ` erik quanstrom
2008-02-15  9:50             ` Douglas A. Gwyn
2008-02-15 11:49               ` Alf
2008-02-15 13:15               ` erik quanstrom
2008-02-15 14:56                 ` Brantley Coile
2008-02-15 15:44                   ` Eris Discordia
2008-02-15 16:07                     ` erik quanstrom
2008-02-15 16:43                       ` maht
2008-02-15 17:35                         ` ron minnich
2008-02-15 18:14                           ` Iruata Souza
2008-02-15 18:37                           ` maht
2008-02-15 17:39                       ` Eris Discordia [this message]
2008-02-15 19:05                         ` maht
2008-02-15 20:11                           ` Eris Discordia
2008-02-15 20:18                             ` Pietro Gagliardi
2008-02-15 20:49                             ` maht
2008-02-16 23:32                               ` Eris Discordia
2008-02-15 23:37                         ` [9fans] Non-stack-based calling conventions Lyndon Nerenberg
2008-02-15 23:39                           ` Pietro Gagliardi
2008-02-15 23:47                             ` Paweł Lasek
2008-02-16  0:23                               ` Brantley Coile
2008-02-16 23:32                                 ` Eris Discordia
2008-02-16 23:41                                   ` Pietro Gagliardi
2008-02-16 23:49                                   ` Brantley Coile
2008-02-17  0:04                                   ` Brantley Coile
2008-02-17 13:30                                     ` Eris Discordia
2008-02-17 15:04                                       ` erik quanstrom
2008-02-17 21:43                                         ` Uriel
2008-02-17 23:58                                           ` erik quanstrom
2008-02-18  1:54                                             ` Bruce Ellis
2008-02-18  3:43                                               ` erik quanstrom
2008-02-18  4:31                                                 ` Bruce Ellis
2008-02-18  4:40                                                   ` Pietro Gagliardi
2008-02-18  6:22                                               ` Robert William Fuller
2008-02-18  7:23                                                 ` Bruce Ellis
2008-02-18  8:38                                                   ` Anant Narayanan
2008-02-22 10:02                                                     ` Douglas A. Gwyn
2008-02-22 19:35                                                       ` Anant Narayanan
2008-02-18  8:30                                                 ` Anant Narayanan
2008-02-18  8:44                                                   ` Bruce Ellis
2008-02-18 18:50                                                 ` Federico G. Benavento
2008-02-18 21:53                                                   ` Lorenzo Fernando Bivens de la Fuente
2008-02-18 22:55                                                     ` y i y u s
2008-02-18 23:46                                                       ` Uriel
2008-02-18 22:14                                                   ` Pietro Gagliardi
2008-02-18 22:16                                                     ` Pietro Gagliardi
2008-02-18 22:32                                                       ` Federico G. Benavento
2008-02-20 11:39                                                   ` maht
2008-02-20 17:19                                                     ` Bruce Ellis
2008-02-22 10:02                                                     ` Douglas A. Gwyn
2008-02-22 10:02                                                   ` Douglas A. Gwyn
2008-02-18 22:13                                                 ` LiteStar numnums
2008-02-18  4:44                                             ` Pietro Gagliardi
2008-02-18  4:46                                               ` Pietro Gagliardi
2008-02-18  5:03                                                 ` Uriel
2008-02-17 16:08                                       ` Anthony Sorace
2008-02-17 22:03                                         ` Charles Forsyth
2008-02-22 10:01                                       ` Douglas A. Gwyn
2008-02-22 14:07                                         ` Iruata Souza
2008-02-22 10:01                                     ` Douglas A. Gwyn
2008-02-22 10:01                                 ` Douglas A. Gwyn
2008-02-16  8:29                               ` Lluís Batlle
2008-02-17 23:09                                 ` Chad Dougherty
2008-02-18 21:50                                 ` Pietro Gagliardi
2008-02-22 10:02                                 ` Douglas A. Gwyn
2008-02-26 21:30                               ` Paweł Lasek
2008-02-26 22:00                                 ` maht
2008-02-26 22:32                                   ` Brantley Coile
2008-02-26 23:15                                     ` Uriel
2008-02-26 22:33                                   ` Brantley Coile
2008-02-26 22:46                                     ` Bruce Ellis
2008-02-27  4:26                                 ` lucio
2008-02-27  6:52                                   ` ron minnich
2008-02-27 17:57                                     ` lucio
2008-02-28  9:33                                     ` Bill Gunshannon
2008-02-28  9:58                                       ` Charles Forsyth
2008-02-28 14:15                                       ` Bill Gunshannon
2008-02-14 17:14         ` [9fans] Google search of the day Eris Discordia
2008-02-14 17:28           ` Fco. J. Ballesteros
2008-02-14 20:14             ` Eris Discordia
2008-02-14 20:30               ` Patrick Kristiansen
2008-02-14 20:38                 ` Eris Discordia
2008-02-14 22:09                   ` Pietro Gagliardi
2008-02-15  9:00                     ` Eris Discordia
2008-02-14 17:51           ` Iruata Souza
2008-02-15  9:31             ` sqweek
2008-02-18  9:48               ` Douglas A. Gwyn
2008-02-18  9:57                 ` Gorka Guardiola
2008-02-19  9:17                 ` sqweek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=op.t6kt0pbyc6yvfe@computer \
    --to=eris.discordia@gmail.com \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).