Download Markus Moisio Compiler Implementation For a New Embedded

Transcript
II
TIIVISTELMÄ
TAMPEREEN TEKNILLINEN YLIOPISTO
Sähkötekniikan koulutusohjelma
Markus Moisio: Compiler Implementation for a New Embedded Processor
Diplomityö, 46 sivua, 3 liitesivua
Kesäkuu 2010
Pääaine: Sulautetut järjestelmät
Tarkastajat: Prof. Jari Nurmi, TkT Fabio Garzia
Avainsanat: Kääntäjät, prosessorit, porttaus, GCC
Transistorien integrointitiheys on jatkanut kasvuaan jo vuosikymmeniä, eikä loppua
ole näköpiirissä.
Suunnittelijoiden tuottavuus ei valitettavasti ole pysynyt tämän
kehityksen perässä, ja tämä on kasvattanut piirien suunniteluaikoja liikaa.
Ongelman
ratkaisemiseksi
uudelleenkäytettäviä
lohkoja,
on
siirrytty
joita
voidaan
käyttämään
yhdistellä
enemmissä
monin
eri
määrin
tavoin,
ja
koostamaan piirit näistä ns. IP-komponenteista. Yksi tällainen IP-komponentti on
Tampereen teknillisellä yliopistolla kehitetty RISC-prosessori, COFFEE.
Jotta prosessori olisi hyödyllinen, se kuitenkin tarvitsee monia eri ohjelmointityökaluja kuten kääntäjän, assemblerin ja linkkerin. Tässä työssä on kuvattu kääntäjän toteutus kehitetylle COFFEE RISC-prosessorille.
Aluksi tutkimme mahdollisia toteutustapoja, joita oli kolme:
tehdä kokonaan
uusi kääntäjä, käyttää kaupallisia kääntäjänkehitystyökaluja, tai muokata olemassaolevia vapaan-lähdekoodin kääntäjiä.
Kokonaan uuden kääntäjän kehitys ei ol-
lut resurssien rajallisuuden vuoksi kovinkaan hyvä vaihtoehto. Kaupallisista kääntäjänkehitystyökaluista tutkimme CoWaRen LisaTek-työkalua, joka on tarkoitettu
helpottamaan prosessorien ja niiden ohjelmointityökalujen kehitystä.
LisaTek-
työkalulla voi generoida kääntäjän graasen käyttöliittymän avulla, mutta kaupallisena ohjelmana se asetti rajoituksia generoidun kääntäjän antamisessa vapaaseen
käyttöön. Lisäksi työkalun kehitys oli vielä kesken työn kriittisimmässä vaiheessa.
Tämä jätti ainoaksi ja parhaimmaksi vaihtoehdoksi valita olemassa oleva kääntäjä,
ja muokata sen lähdekoodia toimimaan COFFEE RISC-käskykannalla.
Vapaasti levitettäviä uudelleenportattavia kääntäjiä löytyi kaksi: LCC ja GCC.
LCC on opetuskäyttöön kehitetty uudelleenportattava C-kääntäjä. Se oli yksinkertaisuutensa vuoksi hyvin houkutteleva vaihtoehdo, mutta GCC teknologisesti kehittyneempänä ja suositumpana vei voiton. Lisäksi GCC:n myötä saataisiin myös
paljon jo kehitettyjä C-ohjelmointikielellä tehtyjä ohjelmistoja käyttöön, kunhan
GCC saataisiin portattua COFFEE:lle.
GCC on alusta asti suunniteltu uudelleenkäyttöä varten, ja sen rajapinnat mahdollistavat uusien kielien ja uusien käskykantojen lisäyksen.
jaettu kolmeen itsenäiseen osaan.
GCC:n toiminta on
Yksi osaa vastaa lähdekoodin lukemisesta ja