TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 17. marraskuuta 2009

Samankaltaiset tiedostot
Eloisuusanalyysi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Eloisuusanalyysi.

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

Muita rekisteriallokaatiomenetelmiä

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 2. marraskuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 13. lokakuuta 2009

Silmukkaoptimoinnista

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 26. lokakuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2009

Jäsennysalgoritmeja. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Jäsennysalgoritmeja

Muistinsiivous. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Muistinsiivous.

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Algoritmit 1. Luento 8 Ke Timo Männikkö

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Syntaksi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Syntaksi. Aluksi.

Monipuolinen esimerkki

Algoritmit 2. Luento 10 To Timo Männikkö

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

Algoritmit 2. Luento 11 Ti Timo Männikkö

Johdanto. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Johdanto. Luennoija.

PARITUS KAKSIJAKOISESSA

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

T Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

MS-A0402 Diskreetin matematiikan perusteet

Attribuuttikieliopit

Verkon värittämistä hajautetuilla algoritmeilla

TIEA341 Funktio-ohjelmointi 1, kevät 2008

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Rekursiiviset tyypit

Johdatus graafiteoriaan

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Johdatus graafiteoriaan

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

Datatähti 2019 loppu

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Pinoautomaatit. Pois kontekstittomuudesta

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

TIE Tietorakenteet ja algoritmit 261

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

T Syksy 2003 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

10. Painotetut graafit

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

Yleinen paikallinen vakautuva synkronointialgoritmi

Algoritmit 1. Luento 14 Ke Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Alityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Kysymys: Voidaanko graafi piirtää tasoon niin, että sen viivat eivät risteä muualla kuin pisteiden kohdalla?

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (Predikaattilogiikka )

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

3.1 Lineaarikuvaukset. MS-A0004/A0006 Matriisilaskenta. 3.1 Lineaarikuvaukset. 3.1 Lineaarikuvaukset

Jakso 4 Aliohjelmien toteutus

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Tietojenkäsittelyteorian alkeet, osa 2

Markov-ketjut pitkällä aikavälillä

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

VAATIMUSMÄÄRITTELY. PROJEKTITYÖ Tik Wclique

Algoritmit 2. Luento 11 Ti Timo Männikkö

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Luento 4 Aliohjelmien toteutus

T Kevät 2006 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 2: Usean muuttujan funktiot

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

811312A Tietorakenteet ja algoritmit, , Harjoitus 6, Ratkaisu

Algoritmit 1. Luento 9 Ti Timo Männikkö

Äärellisten mallien teoria

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

Transkriptio:

TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 17. marraskuuta 2009

Sisällys

Sisällys

Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman ta) Vaihe F maanantai 14.12. klo 10

Kääntäjän rakenne lähdeohjelma SELAAJA sanasjono JÄSENTÄJÄ rakennepuu VÄLIKOODIN GENEROIJA välikoodi KOHDEKOODIN GENEROIJA kohdeohjelma TARKASTAJA SOKERINPILKKOJA OPTIMOIJA OPTIMOIJA

Sisällys

Parempi tapa tehdä pseudoassemblyä Muistiosoitukset kovakoodataan, mutta rekisterien sijasta käytetään väliaikaismuuttujia. Käsky ei ilmaise sallittuja rekistereitä. Nimetään jokaiselle rekisterille yksi yksikäsitteinen väliaikaismuuttuja. Rekisterivaatimukset ilmaistaan rekisteri rekisteri-kopioinnilla. Merkitään myös, onko käsky rekisteri rekisteri-kopiointi.

Impressionistinen esimerkki push rbp ; defn=rsp, use=rsp,rbp mov rbp, rsp mov $f, rdi ; defn=$f, use=rdi, move mov $a, rsi ; defn=$a, use=rsi, move xor $rv, $rv ; defn=$rv cmp $a, 0 ; use=$a jna.l2 mov $rv, 1 ; defn=$rv.l1: cmp $a, 0 ; use=$a jna.l2 mov rdi, $a ; defn=rdi, use=$a, move call [$f] ; defn=rax,rdi,rsi,rdx,rcx,r8,r9,r10,r11, use=$f,rdi mul $rv ; defn=rax,rdx use=$rv mov $rv, rax ; defn=$rv, use=rax, move dec $a ; defn=$a, use=$a jump.l1.l2: mov rax, $rv ; defn=rax, use=$rv, move leave ret ; use=rbx,rsp,rbp,r12,r13,r14,r15

Sisällys

engl. interference graph suuntaamaton graafi Kukin paikallinen muuttuja, parametri ja kääntäjän generoima väliaikaismuuttuja on yksi solmu. Kahden solmun välillä on kaari, jos niiden esittämiä muuttujia ei voi laittaa samaan rekisteriin. tyypillisesti koska ne ovat elossa samaan aikaan

n konstruointi Jokaiselle aliohjelman käskylle n: Jos se on kopiointikäsky a := c, lisää kaari (a, b) jokaiselle b out(n) {c}. Muutoin lisää kaari (a, b) jokaiselle a defn(n) ja b out(n).

Sisällys

Olkoon kohdekielessä k yleiskäyttöistä rekisteriä. Jos häirintägraafi voidaan värittää k:lla värillä siten, että solmuilla, joita yhdistää kaari, on eri väri, niin...... kukin väri voidaan tulkita rekisteriksi, ja sijoittaa samanväriset muuttujat samaan rekisteriin! Valitettavasti graafinväritys (ja siten globaali ) on NP-täydellinen ongelma. Seuraavassa kuitenkin hyväksi osoittautunut lineaarinen algoritmi.

Vaiheet Rakenna Rakenna aliohjelmaa kuvaava häirintägraafi. Tässä tarvitaan eloisuusanalyysiä. Yksinkertaista Valitse jokin solmu, jolla on vähemmän kaaria kuin koneessa on rekistereitä. Poista kyseinen solmu graafista, ja lisää se pinoon. Läikytä Jos kaikilla solmuilla on vähintään niin monta kaarta kuin koneessa on rekistereitä, yksinkertaistus ei onnistu. Tällöin poista jokin sellainen solmu graafista, jonka pitäminen muistissa on vähiten huono idea. Lisää se pinoon. Valitse Jos graafi on tyhjä, palauta pinossa olevat solmut takaisin graafiin värittäen kukin solmu vuorollaan. Tämä onnistuu varmasti kaikille yksinkertaistetuille solmuille. Jos jotakin läikytettyä solmua ei saa väritettyä, jätä se värittämättä ja jatka pinojärjestyksessä. Yritä uudelleen Jos solmuja jäi värittämättä, muokkaa ohjelmaa siten, että kyseiset solmut säilytetään muistissa ja ladataan rekistereihin vain silloin kun sitä tarvitaan. Aja sitten koko algoritmi alusta uudestaan.

Turhien kopiointien poisto Yhdistä Yksinkertaistusaskeleen jälkeen etsi jokin kopiointikäsky a := b ja yhdistä solmut a ja b, jos se on sallittua. Poista tämän jälkeen ohjelmasta kyseinen kopiointikäsky. Solmujen yhdistäminen on kiellettyä, jos ne ovat naapureita. Muutoin sovelletaan jompaa kumpaa seuraavista: Kaksi solmua saadaan yhdistää, jos yhdistetyllä solmulla on vähemmän kuin k sellaisia naapuria, jolla on vähintään k naapuria, missä k on koneen rekisterien määrä. (Briggsin kriteeri) Solmut a ja b saadaan yhdistää, jos jokaiselle a:n naapurille t pätee, että t ja b ovat naapureita tai t:llä on vähintään k naapuria. (Georgen kriteeri) Jäädytä Jos yksinkertaistus ja yhdistäminen ei kumpikaan onnistu, valitse jokin sellainen solmu, jolla on vähän naapureita, ja joka on osallisena kopiointikäskyssä. Merkitse ko. kopiointikäsky ei-kopiointikäskyksi.

Esiväritetyt solmut Solmut, jotka edustavat rekistereitä, ovat esiväritettyjä (engl. precolored). Yksinkertaistusaskel ei saa koskaan valita esiväritettyä solmua. Esiväritettyä solmua ei saa koskaan läikyttää. Valinta-askel aloitetaan, kun graafissa on vain esiväritetyt solmut.

Sisällys

Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman ta) Vaihe F maanantai 14.12. klo 10