> Why a subset?
> Some believe that the full language can not possibly be implemented in a
> cross-compiler for such (a) chip(s). Well, why not port gnat/gcc to the
> chip first, and find out if compiled code can "fit" and run? THEN if it
> doesn't, think about what to leave out.
Actually, this is exactly my plan, as I described earlier.
> In the case of gnat, isn't it true that most of the run-time is in Ada
> and only linked if needed? So the documentation MIGHT end up saying
> "Can compile full Ada, but if you use features A, B, C, ... then your
> program won't fit in ..."
I haven't looked at GNAT yet, but based on my experience with other compilers,
there can be some "hidden" overhead. For example is the main program treated
as a task by the run-time, with the associated data structures allocated
in a system heap? If you have very little RAM, this is not an overhead you want
to pay if you're not using tasking. However, for most systems, it's negligible.
So, many RTSs just allocate the data structures in all cases.
It's really more of an issue about the assumptions made in developing the RTS.
If you know that certain features will not be used, or only be used in certain
ways, you can often do optimizations on the basic RTS not available for the
general case. There's a huge combination of possibilities, so rarely would I
expect that zero RTS code would be generated for a bare machine implementation,
no matter how you write the code, unless you knew in advance that certain parts
of Ada would not be used.
> Why _assume_ something is impossible when you have the opportunity to
> _prove_ it? (With the possibility of being pleasantly surprised along the
Well, certainly the discussions on limiting tasking, etc. are guesses at this
point. But, they are _educated_ guesses :)
LMTAS - "Our Brand Means Quality"
For more info, see http://www.lmtas.com or http://www.lmco.com