W. Wesley Groleau (Wes) wrote:

>> someone here attempted that with gnat.
>> the runtime did not fit on his 128k 68k board.
>> it barely fits in 256k, and big as it is, it still doesn't do
>> what he wanted it to do, in interrupt handling.
>> obviously he stripped out as much crud as he could.
>> it is not straightforward to strip it down, not least because it is
>> very big and very complicated.  since i've written a reasonably lean
>> ada run-time implementation for ada83, it's hard for me to imagine
>> why this one is as big as it is.
>> if Ada95 really requires this much, you can pretty much forget it as
>> a language for embedded systems controllers, at least where gnat is
>> concerned.
>
> Well, at least we have some evidence instead of just predictions!

While I agree that the runtime is large, it really is well crafted and
very straight forward. Of course, there is a lot of material to digest.

The simplest experiment to try is to write a null application, compile
it and see what object modules get linked (use the -v option with
gnatbld to see the set of Ada routines).  Besides the Ada routines,
there
are several C routines from libgnat as well as some assembly/C routines
from libgcc. Given this list, I just walked through the source tree and
read the comments. The code is certainly much easier to understand than
most systems I am paid to deal with!

Beware of Ada.Text_IO. It is a massive package and does pull in lots of
other packages.  If you write a simple "Hello World", I recommend using
Gnat.Io instead.  It is simple implementation of C stdio and does not
use other packages.

I have had a great deal of success in understanding the run time system,
decoding it step by step.  I have been able to create Ada applications
with only a few kilobytes of runtime library (and I can even reduce that
but cutting out unused routines).

David Koogler
Boolean Solutions, Ltd.