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