From: Digby Tarvin <digbyt@acm.org>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] useful language extension, or no?
Date: Fri, 19 Jul 2002 13:53:30 +0100 [thread overview]
Message-ID: <200207191253.NAA06845@cthulhu.dircon.co.uk> (raw)
In-Reply-To: <06b78404a549aa66986788bcb976b339@plan9.bell-labs.com> from David Gordon Hogan at "Jul 18, 2002 08:52:21 pm"
> Interesting. My guess is that it's creating a
> trampoline on the stack, which calls the real
> g(), which nm tells me is at:
>
> 080485a6 t g.0
> Unfortunately gdb on the Linux server is unable to show
> me the instructions:
>
Why not just get the compiler to generate the assembly language
for you.
It is interesting that the current compiler lets you do it (my old
BSD system won't swallow it) but I can't see any attempt to actually
execute any code on the stack.
For instance, adding code to actually call the function:
int bar(){
int i;
int g(){;}
int h;
printf("foo=%x\n",foo);
printf("bar=%x\n",bar);
printf("i=%x\n",&i);
printf("g=%x\n",g);
printf("h=%x\n",&h);
g();
}
generates
.
.
call printf
addl $16,%esp
movl %ebp,%ecx
call g.6
.L3:
movl %ebp,%esp
popl %ebp
ret
where g.6 is in the code segment:
g.6:
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl %ecx,-4(%ebp)
.L4:
movl %ebp,%esp
popl %ebp
ret
and the address of the function is put on the stack, but not used
in the call:
bar:
pushl %ebp
movl %esp,%ebp
subl $56,%esp
leal -36(%ebp),%edx
leal 15(%edx),%eax
andb $240,%al
movl $g.6,%edx
leal 10(%eax),%ecx
subl %ecx,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
movl %edx,6(%eax)
addl $-8,%esp
pushl $foo
pushl $.LC0
call printf
.
.
This is assuming I am reading the Intel code correctly. I am much more
at home with Motorola or DEC assembly language, but I think these code
fragments seem pretty clear.
I don't really understand the need to have a pointer to the function
on the stack, but I am sure there is a good reason for it. Thre restricted
scope of the function name, which I guess could be useful, does not seem
to depend on it.
Regards,
DigbyT
--
Digby R. S. Tarvin digbyt@acm.org
http://www.cthulhu.dircon.co.uk
next prev parent reply other threads:[~2002-07-19 12:53 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-19 0:52 David Gordon Hogan
2002-07-19 12:53 ` Digby Tarvin [this message]
2002-07-19 15:41 ` Mike Haertel
2002-07-19 18:09 ` Digby Tarvin
2002-07-19 18:38 ` Scott Schwartz
2002-07-19 19:07 ` Digby Tarvin
2002-07-29 16:01 ` Ralph Corderoy
-- strict thread matches above, loose matches on Subject: below --
2002-07-20 5:59 forsyth
2002-07-19 18:35 forsyth
2002-07-19 18:33 David Gordon Hogan
2002-07-19 18:22 David Gordon Hogan
2002-07-19 18:36 ` Digby Tarvin
2002-07-19 15:45 forsyth
2002-07-19 18:19 ` Digby Tarvin
2002-07-19 6:48 forsyth
2002-07-18 19:24 David Gordon Hogan
2002-07-19 4:22 ` Lucio De Re
2002-07-18 15:02 forsyth
2002-07-18 23:57 ` arisawa
2002-07-29 15:59 ` Douglas A. Gwyn
2002-07-18 12:54 Richard Miller
2002-07-17 13:36 rob pike, esq.
2002-07-16 17:31 presotto
2002-07-17 8:58 ` William Josephson
2002-07-17 8:58 ` Douglas A. Gwyn
2002-07-16 17:01 forsyth
2002-07-17 8:59 ` Douglas A. Gwyn
2002-07-16 16:50 rob pike, esq.
2002-07-16 15:59 ` Sam
2002-07-16 17:04 ` Howard Trickey
2002-07-16 16:20 ` Sam
2002-07-16 16:08 rob pike, esq.
2002-07-16 15:31 ` Sam
2002-07-16 15:53 rob pike, esq.
2002-07-16 15:05 ` Sam
2002-07-16 21:29 ` Steve Kilbane
2002-07-16 14:12 Sam
2002-07-16 16:30 ` Boyd Roberts
2002-07-17 12:49 ` Ian Broster
2002-07-17 12:12 ` Sam
2002-07-17 13:33 ` Lucio De Re
2002-07-17 16:12 ` Fariborz (Skip) Tavakkolian
2002-07-17 22:21 ` arisawa
2002-07-17 22:28 ` Ronald G Minnich
2002-07-18 9:51 ` Douglas A. Gwyn
2002-07-18 10:19 ` Lucio De Re
2002-07-18 10:28 ` Lucio De Re
2002-07-18 14:50 ` Mike Haertel
2002-07-18 14:56 ` Lucio De Re
2002-07-19 5:23 ` arisawa
2002-07-18 14:21 ` Douglas A. Gwyn
2002-07-18 14:55 ` Lucio De Re
[not found] <20020616170512.14978199BB@mail.cse.psu.edu>
2002-06-16 21:12 ` [9fans] INVESTMENT & ASSISTANCE Digby Tarvin
2002-06-17 0:49 ` Scott Schwartz
2002-06-18 5:23 ` Lucio De Re
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=200207191253.NAA06845@cthulhu.dircon.co.uk \
--to=digbyt@acm.org \
--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).