Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä ohjelmoida kaikkia tietokoneita? 2013-2014 Lasse Lensu 2
Hyvin määritelty kieli mahdollistaa algoritmin esitystavan automaattisen tulkitsemisen ja muuntamisen toiseen muotoon. Tulkitseminen ja kääntäminen ovat korkeamman tason ohjelmointikielellä esitettyjen algoritmien suorittamisen edellytys. 2013-2014 Lasse Lensu 3
Tietojenkäsittelyn perusteet 2 Konekieleen kääntäminen 2013-2014 Lasse Lensu 4
Kääntäminen käytännössä Busch C. 2006 Alaoutinen S. 2008 Käännösprosessi: Selaaminen Jäsentäminen Kohdekielen tuottaminen 2013-2014 Lasse Lensu 5
Käännösprosessi Korkean tason kielellä kirjoitetun algoritmin kääntäminen lähdekieleltä tietokoneen ymmärtämään konekieliseen muotoon. Jokainen korkean tason kielellä kirjoitettu käsky käännetään yhdeksi tai useammaksi konekieliseksi käskyksi. 2013-2014 Lasse Lensu 6
Syntaksin määrittely Automaattinen käännösprosessi vaatii hyvin määritellyn lähdekielen ja kohdekielen. Lähdekielinen algoritmin esitys on johonkin merkkivalikoimaan kuuluvien merkkien jono. Syntaktiset (kieliopilliset) säännöt kertovat, minkälaiset merkkijonot ovat jonkin kielen ilmentymiä. Kielen syntaksi on tarvittavien syntaktisten sääntöjen kokoelma. 2013-2014 Lasse Lensu 7
Kääntäjän toiminta Kääntäjä muuntaa korkean tason kielellä kirjoitetun ohjelman konekielelle kolmessa vaiheessa: 1.Selaaminen eli leksikaalinen analyysi 2.Jäsentäminen eli syntaktinen analyysi 3.Kohdekielisen esityksen tuottaminen Lähdekielinen esitys Selaus Tekstialkioiden lista Jäsennys Jäsennyspuu Kohdekielen tuottaminen Kohdekielinen esitys 2013-2014 Lasse Lensu 8
Selaaminen Tunnistaa yksittäiseen tekstialkioon kuuluvat merkit Selvittää tekstialkion tyypin Tekstialkiot ovat päätesymboleita: Varattu sana Operaattori Välimerkki Tunnus Luku- tai merkkivakio Tallettaa tunnukset symbolitauluun 2013-2014 Lasse Lensu 9
Jäsentäminen Selvittää syntaktisen rakenteen jäsennyspuuhun Jäsentämisen strategia: Osittava eli ylhäältä alas (top-down) Kokoava eli alhaalta ylös (bottom-up) Jäsentäminen sisältää epädeterminismiä, kun kieliopin produktioiden läpikäyntijärjestystä ei ole kiinnitetty. 2013-2014 Lasse Lensu 10
Kohdekielen tuottaminen Syntaktisen analyysin jälkeen tuotetaan jäsennyspuuta seuraten konekielinen ohjelma: Muistin varaaminen Konekielisten käskyjen muodostaminen Koodin optimointi 2013-2014 Lasse Lensu 11
Muistin varaaminen Varataan muisti muuttujille, joilla kullakin yksilöllinen tunnus ja arvo Määrätään muistiosoitteet, jotka voivat olla fyysisiä (todellisia) tai virtuaalisia Tunnus Tyyppi Koko Osoite summa:=arvo+1 merkki:= a... summa arvo merkki kok.luku kok.luku merkki 4 4 1 245 249 253... 254 2013-2014 Lasse Lensu 12
Konekäskyjen muodostaminen Symbolisen konekielen tuottaminen jäsennyspuusta Käännösmoduuli: MODULE asetuslause(x, y, o, z) tulosta LOAD y CASE o of x := y+z := Tunnus + X Tunnus Tunnus LOAD y ADD z STORE x Y Z '+' : tulosta ADD z '-' : tulosta SUBTRACT z '*' : tulosta MULTIPLY z '/' : tulosta DIVIDE z ENDCASE tulosta STORE x ENDMODULE 2013-2014 Lasse Lensu 13
Optimointi Suorassa käännöksessä konekieliseen koodiin jää turhia tai ylimääräisiä osuuksia. Muutetaan koodi kohdekoneen kannalta tehokkaampaan muotoon: LOAD Y ADD Z STORE X LOAD X MULTIPLY A STORE B LOAD Y ADD Z MULTIPLY A STORE B 2013-2014 Lasse Lensu 14
Yhteenveto Kääntämisellä tarkoitetaan algoritmien esitystavan muutoksia esim. ihmisen käyttöön soveltuvan korkean tason kielestä tietokoneen ymmärtämään muotoon. Jokainen korkean tason kielellä kirjoitettu käsky käännetään yhdeksi tai useammaksi toisen kielen käskyksi. Kääntämisessä tarvitaan selaamista, jäsennystä ja kohdekielen tuottamista. 2013-2014 Lasse Lensu 15