comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: LLVM--Low Level Virtual Machine--and Ada
Date: Tue, 24 Jul 2007 14:21:30 -0500
Date: 2007-07-24T14:21:30-05:00	[thread overview]
Message-ID: <f85jbd$mgj$1@jacob-sparre.dk> (raw)
In-Reply-To: mailman.7.1185264194.3834.comp.lang.ada@ada-france.org

"Duncan Sands" <baldrick@free.fr> wrote in message
news:mailman.7.1185264194.3834.comp.lang.ada@ada-france.org...
...
> > Janus/Ada has never used any executable data/stack in its 32-bit
versions;
> > such code would save no more than a clock cycle or two (out of hundreds
or
> > thousands) and as such could not be significant. We use
compiler-generated
> > thunks rather than run-time generated trampolines, and I'm not sure why
> > anyone would use the latter (given that they increase the exploitability
of
> > a program). Most be something I don't understand...
>
> how do these thunks work?

Generally, the compiler passes the address of the thunk to wherever it is
needed, and it is called indirectly. The thunks themselves adjust the
parameters as needed and call the real routine.

This is necessarily a very general description; we use many different kinds
of thunks, and the details are different for each. There are some where the
address of the routine to call is passed in as well; some of them are just
wrappers, and some implement entire operations (like an allocator).

In general, the front end generates the thunks; the back end knows about
them for optimization and debugger and error message purposes, but it
doesn't generate any. I would expect it to be fairly hard to retrofit them
if the front end is insisting on doing something else.

(It's also possible that trampolines are much faster on some architectures;
I've primarily looked at the x86 machines where there is little advantage.)

                                           Randy.






  parent reply	other threads:[~2007-07-24 19:21 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-18  3:56 LLVM--Low Level Virtual Machine--and Ada Jerry
2007-07-18  7:24 ` Georg Bauhaus
2007-07-18  7:48 ` Duncan Sands
2007-07-19 14:30   ` Maxim Reznik
2007-07-19 14:56     ` Duncan Sands
     [not found]     ` <200707191656.27602.baldrick@free.fr>
2007-07-19 15:03       ` Duncan Sands
2007-07-19 21:30         ` Robert A Duff
2007-07-20  7:44           ` Duncan Sands
2007-07-20 14:06             ` Robert A Duff
2007-07-21 13:09               ` Tero Koskinen
2007-07-23  7:47               ` Duncan Sands
2007-07-24  2:12                 ` Randy Brukardt
2007-07-24  8:03                   ` Duncan Sands
2007-07-24  9:50                     ` Colin Paul Gloster
2007-07-24 10:47                       ` Markus E Leypold
2007-07-25 12:12                         ` Colin Paul Gloster
2007-07-25 12:59                           ` Markus E Leypold
2007-07-24 19:21                     ` Randy Brukardt [this message]
2007-07-24 19:36                       ` Duncan Sands
2007-07-24 19:58                         ` Randy Brukardt
2007-07-24 23:28                   ` Robert A Duff
2007-07-25  0:39                     ` Randy Brukardt
2007-07-25  2:00                       ` Robert A Duff
2007-07-25 13:14                         ` Duncan Sands
2007-07-21 22:04 ` anon
2007-07-22 13:22   ` Steve
2007-07-23 12:29   ` Colin Paul Gloster
2007-07-23 14:42     ` anon
2007-07-23 16:55       ` Markus E Leypold
2007-07-24 10:19       ` Colin Paul Gloster
replies disabled

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