Questions about trampolines
E. Weddington
ericw@evcohs.com
Mon Mar 14 17:33:00 GMT 2005
Robert Dewar wrote:
> Ãyvind Harboe wrote:
>
>> - Many backends do not support trampolines. Are trampolines
>> something that is ultimately being added to the backends?
>
>
> We have not encountered any targets not supporting nested functions
> in porting Ada to many different targets.
>
It's interesting that this subject was brought up.
There is a project called AVR-Ada, to add Ada to the AVR target:
<http://sourceforge.net/projects/avr-ada>
And there was recent discussion on the avr-gcc-list about the role of
nested functions which led to discussion about trampolines and Ada for
the AVR:
<http://lists.gnu.org/archive/html/avr-gcc-list/2005-03/msg00180.html>
Basically, trampolines don't work for the AVR because it is a Harvard
Architecture device.
This will also affect other similar devices, for example, the new MaxQ
target support that is going into GCC. IIRC, It's also a Harvard
Architecture device.
>> - Do (theoretical?) alternatives to trampolines exist? I.e. something
>> that does not generate code runtime.
>
>
> Yes, you could have double length pointers for function pointers (pointer
> to code + static link). This is the more conventional implementation, but
> it introduces an overhead when not using nested functions. This overhead
> is more than acceptable in Ada, where it would be very nice to get rid
> of trampolines for efficiency's sake. But for C this would not be
> acceptable.
Any alternatives that would work for Harvard Architecture devices such
as the AVR would be welcome.
Eric
More information about the Gcc
mailing list