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



Samankaltaiset tiedostot
Silmukkaoptimoinnista

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. 17. marraskuuta 2009

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

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

Lisää pysähtymisaiheisia ongelmia

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

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

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

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

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

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

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

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

Täydentäviä muistiinpanoja laskennan rajoista

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

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

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

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

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

Muita rekisteriallokaatiomenetelmiä

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Miten osoitetaan joukot samoiksi?

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

Muita vaativuusluokkia

Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa.

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

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

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

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.

Demo 1: Simplex-menetelmä

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

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Yksinkertaiset tyypit

13. Ratkaisu. Kirjoitetaan tehtävän DY hieman eri muodossa: = 1 + y x + ( y ) 2 (y )

Gaussin ja Jordanin eliminointimenetelmä

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 10: Ensimmäisen kertaluvun differentiaaliyhtälö

4.0.2 Kuinka hyvä ennuste on?

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

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

Rekursiiviset palautukset [HMU 9.3.1]

5.3 Ratkeavia ongelmia

Kontekstittomien kielten jäsentäminen Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

Markov-kustannusmallit ja kulkuajat

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

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

MATP153 Approbatur 1B Ohjaus 2 Keskiviikko torstai

Algoritmit 1. Luento 13 Ti Timo Männikkö

1 Määrittelyjä ja aputuloksia

1. Olkoon f :, Ratkaisu. Funktion f kuvaaja välillä [ 1, 3]. (b) Olkoonε>0. Valitaanδ=ε. Kun x 1 <δ, niin. = x+3 2 = x+1, 1< x<1+δ

Algoritmit 1. Luento 1 Ti Timo Männikkö

yleisessä muodossa x y ax by c 0. 6p

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

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

Ratkaisu: a) Kahden joukon yhdisteseen poimitaan kaikki alkiot jotka ovat jommassakummassa joukossa (eikä mitään muuta).

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

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Rekursiiviset tyypit

Insinöörimatematiikka A

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

MS-A010{3,4,5} (ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 10: Ensimmäisen kertaluvun differentiaaliyhtälö

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

Luento 8: Epälineaarinen optimointi

Ominaisarvo ja ominaisvektori

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

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

Johdatus matemaattiseen päättelyyn

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Matematiikan tukikurssi, kurssikerta 5

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Numeeriset menetelmät TIEA381. Luento 12. Kirsi Valjus. Jyväskylän yliopisto. Luento 12 () Numeeriset menetelmät / 33

MATP153 Approbatur 1B Harjoitus 3, ratkaisut Maanantai

Derivaatan sovellukset (ääriarvotehtävät ym.)

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

2 dy dx 1. x = y2 e x2 2 1 y 2 dy = e x2 xdx. 2 y 1 1. = ex2 2 +C 2 1. y =

Koodausteoria, Kesä 2014

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Algoritmit 1. Luento 3 Ti Timo Männikkö

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

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

Yhtälön oikealla puolella on säteen neliö, joten r. = 5 eli r = ± 5. Koska säde on positiivinen, niin r = 5.

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

Funktion raja-arvo. lukumäärien tutkiminen. tutkiminen

Laskuharjoitus 2A ( ) Aihepiiri: Raja-arvot etc. Adams & Essex, 8th Edition, Chapter 12. z = f(x, 0) = x2 a z = f(0, y) = 02 a 2 + y2

Luku 4. Derivoituvien funktioiden ominaisuuksia.

Luento 9: Yhtälörajoitukset optimoinnissa

Martingaalit ja informaatioprosessit

811120P Diskreetit rakenteet

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

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

LUKU 7. Perusmuodot Ensimmäinen perusmuoto. Funktiot E, F ja G ovat tilkun ϕ ensimmäisen perusmuodon kertoimet ja neliömuoto

Ominaisarvo ja ominaisvektori

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Transkriptio:

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

Sisällys

Sisällys

Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale torstai 14.1. klo 16 valmis kääntäjä arviointiaikataulu: palautus 31.12. mennessä, arviointi 14.1. mennessä palautus 14.1. mennessä, arviointi 28.1. mennessä

Sisällys

Ei ilmaista lounasta Lause Ei ole olemassa Turing-täydellisen ohjelmointikielen kääntäjää, joka kääntää jokaisen lähdekielisen ohjelman pienimmäksi saman käyttäytymisen omaavaksi kohdekieliseksi ohjelmaksi.

Ei ilmaista lounasta: todistus Rajoitutaan tarkastelemaan lähdekielisiä ohjelmia, jotka pysähtyessään tulostavat KYLLÄ tai EI ja jotka eivät tulosta mitään jos ne eivät pysähdy. On yksinkertaista kirjoittaa pienin kohdekielinen ohjelma, joka ei tulosta mitään ja joka ei koskaan pysähdy. Tarkka ohjelma riippuu kohdekielestä; olkoon nyt esimerkkinä L: jmp L. Näin ollen lauseessa tarkoitettu kääntäjä tuottaa kaikista ei-pysähtyvistä ohjelmista kyseisen ohjelman. Mutta tällöin kyseistä kääntäjää voidaan käyttää Turingin koneen pysähtymisongelman ratkaisemiseen: kirjoitetaan sille lähdekielinen ohjelma, joka simuloi kyseistä Turingin konetta halutulla syötteellä, ja katsotaan, tuliko kohdekieliseksi ohjelmksi L: jmp L (tai vastaava).

Kääntäjän kirjoittajien täystyöllisyys Lause Olkoon meillä kääntäjä K Turing-täydellisestä lähdekielestä A kohdekieleen B. Tällöin on olemassa kääntäjä K lähdekielestä A kohdekieleen B, joka tuottaa kaikilla syötteillä vähintään yhtä lyhyen ohjelman ja ainakin yhdellä syötteellä lyhyemmän ohjelman kuin K.

Kääntäjän kirjoittajien täystyöllisyys: todistus Ei ilmaista lounasta -lauseen perusteella on ainakin yksi lähdekielinen ohjelma L, jolla K tuottaa kohdekielisen ohjelman ˆL, joka ei ole lyhin mahdollinen. Tällöin on olemassa kohdekielinen ohjelma ˆL, jolla on sama käyttäytyminen kuin ˆL:llä mutta joka on tätä lyhyempi. Kääntäjä K tarkistaa, onko syötteenä L; jos on, se tulostaa ˆL :n, muutoin se kutsuu K:ta.

Tulkinta Optimoivaa kääntäjää ei ole olemassa, on olemassa vain tulosta parantavia kääntäjiä. Aina on mahdollista kirjoittaa parempi kääntäjä.

Globaalin optimoinnin perusresepti Tietovuoanalyysillä kerätään tietoa ohjelman käyttäytymisestä. Muunnosvaiheessa muokataan kerätyn tiedon perusteella ohjelma paremmaksi. Toisin kuin rekisteriallokaatio, globaali optimointi operoi yleensä välikieltä.

Sisällys

Voiko tietty sijoitus t:hen vaikuttaa suoraan t:n arvoon tietyssä kohdassa ohjelmaa? t:n yksiselitteinen määrittely on kolmiosoitekoodin käsky, jossa t on kohteena (esim. t := a + b). defs(t) on niiden lauseiden joukko, jotka määrittelevät yksiselitteisesti t:n. t:n moniselitteinen määrittely on käsky (kuten aliohjelmakutsu), joka saattaa muuttaa t:n arvoa. unohdetaan nämä gen(s) on niiden käskyjen joukko, jotka käsky s generoi gen(s) = {s}, jos s on yksiselitteinen määrittely, ja gen(s) = muutoin. kill(s) on niiden lauseiden joukko, jotka käsky s tappaa ne määrittelevät samoja muuttujia kuin s kill(s) = defs(t) {s}, jos s määrittelee yksiselitteisesti (vain) t:n, ja kill(s) =, jos s ei määrittele yksiselitteisesti mitään.

tietovuoyhtälöt in(n) = out(p) p pred(n) out(n) = gen(n) (in(n) kill(n)) Lähtökohtana kontrollivuograafi joko käskyittäinen taikka peruslohkoittainen. in(n) on niiden määrittelevien käskyjen joukko, jotka saavuttavat solmun n alun. in(n) on niiden määrittelevien käskyjen joukko, jotka saavuttavat solmun n lopun. Yhtälöt voidaan ratkaista kiintopisteiteraatiolla (ks. eloisuusanalyysikalvot).

Vakion vyöryttäminen engl. constant propagation Olkoon lauseet L 1 : t := c, missä c on vakio, ja lause L 2 : y := t + x, ja...... L 1 in(l 2 ) ja...... kaikilla L i in(l 2 ) pätee joko L i = L 1 tai L i def (t), niin...... L 2 voidaan muokata kirjoittaa muotoon L 2 : y := c + x. Tässä siis in on saavuttavien määrittelyiden ratkaisusta.

Sisällys

Lauseke x y on saatavilla kontrollivuograafin solmussa n, jos jokaisella n:ään saapuvalla polulla x y lasketaan ainakin kerran ja millään näistä poluista ei ole x:n tai y:n määrittelyä viimeisimmän laskennan jälkeen. gen(n) on nyt niiden lausekkeiden joukko, jotka n laskee. gen(n) = {x y}, jos n on t := x y, ja gen(n) = muutoin. kill(n) on niiden lausekkeiden joukko, joiden lasketun arvon n tappaa. kill(n) = { e t FV(e) }, jos t def (n) FV(e) on niiden muuttujien joukko, jotka esiintyvät e:ssä ja kill(n) = muutoin.

tietovuoyhtälöt in(n) = out(p) p pred(n) out(n) = gen(n) (in(n) kill(n)) Huomaa eron vähyys edelliseen yhtälöryhmään! vain gen- ja kill-joukkojen määrittelyssä ja... yhdisteen vaihtumisessa leikkaukseksi kaikilla poluilla, ei vähintään yhdellä Yhtälön haluttu ratkaisu on suurin kiintopiste lähtökohtana täydet joukot, joita iteraatioilla pienennetään.

Yhteisten alilausekkeiden eliminointi Olkoon meillä käsky L 1 : t := x y, jolle pätee (x y) in(l 1 ) (missä in on saatavilla olevien lausekkeiden ratkaisu). Etsi käsky L 2 : v := x y, jolle pätee että kontrollivuograafissa on ainakin yksi polku L 2 :sta L 1 :een, jossa ei ole määritelty x:ää tai y:tä taikka laskettu x y:tä. Kirjoita L 2 muotoon L 2 : w := x y; v := w, missä w on uusi väliaikaismuuttuja. Rekisteriallokaatio kykenee toivottavasti poistamaan tuon uuden kopiointikäskyn. Kirjoita L 1 nyt muotoon L 1 : t := w.

Sisällys

kin voidaan esittää gen- ja kill-joukkojen avulla. gen(n) = uses(n) kill(n) = def (n) Yhtälöryhmä on taas samankaltainen, mutta analyysi etenee taaksepäin, ei eteenpäin kuten edellä mainituissa: out(n) = s succ in(s) in(n) = gen(n) (out(n) kill(n))

Kuolleen koodin poisto Jos on käsky L : a := b c ja...... a out(l) (eloisuusanalyysin ratkaisussa), niin... L voidaan poistaa ohjelmasta (mikäli :llä ei ole sivuvaikutuksia). Tyypillinen sivuvaikutus on esimerkiksi nollalla jakaminen -virhe.

Sisällys

Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale torstai 14.1. klo 16 valmis kääntäjä arviointiaikataulu: palautus 31.12. mennessä, arviointi 14.1. mennessä palautus 14.1. mennessä, arviointi 28.1. mennessä