comp.lang.ada
 help / color / mirror / Atom feed
From: Christopher Fairbairn <ckf13@student.canterbury.ac.nz>
Subject: Re: [Announce] AVR-Ada V0.1 released
Date: Wed, 10 Dec 2003 20:42:45 +1300
Date: 2003-12-10T20:42:45+13:00	[thread overview]
Message-ID: <8aABb.24813$VV6.572282@news.xtra.co.nz> (raw)
In-Reply-To: K_bAb.433978$HS4.3424246@attbi_s01

Hi,

Jeff C, wrote:
> That would be a strange thing to presume. While there are Ada compilers
> that take that approach I would
> assume that since this is based on the Ada front end of GCC with a GNAT
> heritage that it produces
> code just like every other (well nearly every other) GCC/GNAT compiler.

GCC vss GCC :-)

Some people I know of are not aware of the true meaning to GCC. To them 
(mostly people doing embedded development work, using windows based 
development hosts) GCC stands for the "GNU C compiler" and not a lot more, 
they are not fully aware of it's origins or how it internally is 
architectured. They might know of other GNU compilers for languages such as 
Pascal, Ada or Fortran etc but they are not totally aware of how they are 
related with GCC.

However, explaining GCC as the "GNU Compiler Collection" helps clarify 
things up quite a lot.

GCC is made up of two major "components". Front-ends which parse languages 
such as C, C++, Fortran and Ada etc into an intermediate form and a series 
of back-ends which take the intermediate form and end up generating machine 
code for a particular architecture.

Some things are shareable between the particular targets, for example there 
is a whole range of optomisations which can be done on the intermediate 
form which is not backend (target) specific and hence is shared across the 
different compilers. On the other hand there are optomisations which are 
exteremly architecture dependant and hence belong in code developed 
specifically for that port.

A compiler built as part of the GNU Compiler collection is obviously the 
combination of a selected front end intergrated with a selected backend. 
The avr-gcc executable on my box is obvioulsy the combination of the avr 
backend and the C front end, while m68k-palmos-gcc is the same front end 
married to a different backend.

Hopefully I havn't messed up that simplified description too much...

There has been a backend for the AVR architecture for a while now, however 
the original developers (as far as I can remember off the top of my head) 
only worried about getting the C front end working reasonably well.

As the original poster commented, there are various aspects of all languages 
which mean work before a "raw" backend code generator for that architecture 
can be utilised. Things such as how language constructs such as exceptions 
should map to architecture capabilities and any runtime library support 
required. In the case of a C compiler choices include things such as what 
size a long or short int should be etc etc.

Hopefully I've clarified things slightly for those interested, and hopefully 
I havn't mucked up my simpilified description too much.

Hope it helps,
Christopher Fairbairn.




  reply	other threads:[~2003-12-10  7:42 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-05 12:48 [Announce] AVR-Ada V0.1 released Rolf Ebert
2003-12-06  2:46 ` Jim Granville
2003-12-06  3:25   ` Jeff C,
2003-12-10  7:42     ` Christopher Fairbairn [this message]
2003-12-10 17:23       ` Warren W. Gay VE3WWG
2003-12-08  9:16   ` Rolf Ebert
2003-12-08 14:27     ` Ulf Samuelsson
2003-12-09 10:52       ` Uwe Bonnes
2003-12-09 15:54         ` Ulf Samuelsson
2003-12-08 10:03   ` David Brown
replies disabled

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