Mon, 25 Nov 1996 11:19:31 -0800
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
> 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,
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).
Boolean Solutions, Ltd.