Vorige                       Inhoud                      Volgende
_________________________________________________________________

Toekomst                860409          (c) 1986 by ORD-GROUP  59


                            Toekomst

Onze toekomstplannen omvatten o.a.

- Het  schrijven  van  een C compiler.  Dit  moet  een  volledige
optimaliserende C compiler worden. We zullen uitgaan van het boek
"The C programming language" als beste taaldefinitie.

- Het  ontwikkelen  van een nieuwe objectformat en het  schrijven
van  de  bijbehorende  linker.  Een  compiler  of  een  assembler
genereert zogenaamde object code. Met een linker kunnen verschil-
lende  stukken  objectcode  worden  samengevoegd  tot  een  enkel
programma. Dit maakt het mogelijk om programma's in losse modules
te schrijven en te compileren.

Ons  huidige  objectformat is bij lange na niet goed genoeg  voor
een goed systeem van modules en libraries.  Wij zullen daarom een
nieuw objectformat ontwikkelen die o.a.  aan de volgende specifi-
caties zal voldoen:

De  objectfile  moet  natuurlijk  relocatie-informatie  bevatten.
Labels  die in een module zijn gedefinieerd als extern  bruikbaar
kunnen  door andere modules worden gebruikt.  Het is mogelijk  om
een  label  dat in een andere module wordt gedefinieerd  met  een
offset  te gebruiken.  Men kan dus een plaats definieren waar  de
waarde  van dat label plus een offset moet komen  te  staan.  Dit
wordt  vooral  gebruikt in compiler output b.v.  om  een  bepaald
array element efficient te kunnen gebruiken.

De  linker moet ook interne labels kunnen invullen.  Deze  labels
zijn  alleen  bekend binnen een module.  Dit  systeem  maakt  het
mogelijk  om compilers hun output in een pass te laten  genereren
zonder  terug  te  moeten gaan in de objectcode om dingen  in  te
vullen. De linker moet in staat zijn om van een objectfile alleen
de interne labels in te vullen en de objectfile dan weer terug te
schrijven.

In een objectfile moet ruimte zijn voor compiler informatie.  Dit
staat compilers toe om te zien wat voor procedures en functies in
een  bepaalde module worden gedefinieerd.  Dit maakt  b.v.  type-
checking mogelijk over de modulegrenzen heen.

Een  module  moet hints kunnen bevatten betreffende de  libraries
die het nodig heeft. Dit maakt gebruik van de linker eenvoudiger.

De  objectformat zal 3 aparte areas kennen.  Code en  read  only,
geinitialiseerde  RAM en ongeinitialiseerde RAM.  Dit is nodig in
verband met veiligheid en geheugencontrole in een goed  operating
systeem. (Zie ook het UNIX objectformat.)

Wij  kennen  geen enkele objectformat die al  deze  mogelijkheden
heeft.  Deze  objectformat moet b.v.  alles kunnen wat onder UNIX
mogelijk is en nog wat meer.

_________________________________________________________________

Vorige                       Inhoud                      Volgende