Re Generating RTL code

pap@litp.unip6-7.fr (Patrick PAROUBEK)
5 Jan 89 11:40:40 GMT

          From comp.compilers

Related articles
Re Generating RTL code pap@litp.unip6-7.fr (1989-01-05)
| List of all articles for this month |

From: pap@litp.unip6-7.fr (Patrick PAROUBEK)
Newsgroups: gnu.gcc
Keywords: RTL, code generator, gcc
Date: 5 Jan 89 11:40:40 GMT
Distribution: gnu
Organization: Universite PARIS 6 - LITP - equipe CLIP

>Is there any simple way of getting gcc to compile from hand-generated
>RTL code ?
>Dan Rice, Swarthmore College, Swarthmore PA 19081


>2. Has anybody tried to separate the code generation part of gcc from
>the parsing part. I ask this because I would like to write a Modula-2
>compiler with the same code generator.
>Piet van Oostrumm, Dept of Computer Science, Umiversity of Utrecht


To port the compiler for the CLIP language which we are now developing
in LITP, I extracted the code generator of gcc in order to connect
it to the front-end of the current CLIP compiler. The modified version
of gcc 1.18 can run now either with one or two passes. The intermediary
file generated during two-passes compilation contains RTL language in a
readable form. The modifications to perform on the compiler are limited
because almost all the I/O functions for RTL language already exist.


But I want to precise that the idea of having the gcc code generator
on a stand alone basis is not as good as it may seem at first view.


First of all, R.M. Stallman (the author of gcc), questioned about the
issue, said that he does not intend in the future to release the code
generator alone because, it would incite people to develope their own
copyrighted front-end, and that is contrary to the aims of the Free
Software Foundation. According to him, the amount of work required to
write a new front-end generating RTL code is equivalent to the one
required to modify directly the font-end of gcc. Furthermore the use
of an intermediary file would make the resulting product too slow to
run.


This last point cancels, in my opinion, the first one, but I think
Mr Stallman is right if your intend is compiler writing. The reason is
that the gcc code generator is not in its actual form a stand-alone code
generator, as a consequence it is finely attuned to the gcc front-end and,
the RTL expressions it recognizes form only a subset of all the possible
expressions you can write. There is no need to implement all the
possible cases (and they are numerous when one is dealing with code
generation) when you can do with only a few of them and
thus use simple and straightforward algorithms (like linear search)
without loss of performances.
Although the RTL language is machine-independent, the code you write
with it, is machine-dependent (register numbers, offsets values etc.. )
and will still require some porting work.


The reason why I used the gcc code generator to port the CLIP compiler
from VAX to SUN3, is that the intermediary language of the CLIP compiler
(inspired from the pcc intermediary code) is easily translated into RTL
code, and the machine-dependency issue does not offer any real problem
due to the processors similarity.
Furthermore, CLIP being an experimental language I was ready to trade
compilation speed for ease of porting.


Patrick Paroubek
Universite Pierre et Marie Curie - LITP
tour 45-55, piece 205
4 place Jussieu
75252 PARIS CEDEX 05


phone : +33 1 43 36 25 25 ext.40-55, UUCP : ..!uunet!mcvax!inria!litp!pap
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.