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



Samankaltaiset tiedostot
Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Käännös, linkitys ja lataus

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Yhteydettömän kieliopin jäsennysongelma

11.4. Context-free kielet 1 / 17

815338A Ohjelmointikielten periaatteet

4. Lausekielinen ohjelmointi 4.1

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

8. Kieliopit ja kielet

JOHDATUS TEKOÄLYYN TEEMU ROOS

4. Lausekielinen ohjelmointi 4.1

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

Jakso 10 Ohjelman suoritus järjestelmässä

Luento 10 Käännös, linkitys ja lataus

Luento 10 Käännös, linkitys ja lataus. Käännös Linkitys Dynaaminen linkitys Lataus

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Käännösyksikkö (4) Objektimoduuli (8)

Luento 10 Käännös, linkitys ja lataus

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

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

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Objektimoduuli (2) Symbolitaulu

Jakso 10 Ohjelman suoritus järjestelmässä. Käännös Linkitys Dynaaminen linkitys Lataus

Jakso 10 Ohjelman suoritus järjestelmässä

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

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

Johdatus ohjelmointiin

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Jakso 4 Aliohjelmien toteutus

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

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

8. Kieliopit ja kielet 1 / 22

Yhteydettömät kieliopit [Sipser luku 2.1]

Luento 4 Aliohjelmien toteutus

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Kertausluento luennoista 1-3 1

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Java-kielen perusteet

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

15. Ohjelmoinnin tekniikkaa 15.1

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

5. HelloWorld-ohjelma 5.1

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmointikielten syntaksista ja semantiikasta

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Virtuaalikoneiden generointi Vmgen-kääntäjällä

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Monipuolinen esimerkki

Attribuuttikieliopit

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

follow(a) first(α j ) x

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Ei-yhteydettömät kielet [Sipser luku 2.3]

Tietorakenteet ja algoritmit - syksy

Scheme-kesäkurssi luento 5

Ohjelmointi 1 / syksy /20: IDE

Tietokoneen toiminta (Computer Organization I)

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Ohjelmointi 1. Kumppanit

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

LLVM-kääntäjäarkkitehtuuri ja sen soveltuvuus Java-virtuaalikoneen toteutuspohjaksi

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

1. Ohjelmoinnin peruskäsitteet ja -elementit

Kontekstittomat jäsennysmenetelmät

Jäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmointi 1 Taulukot ja merkkijonot

Java-kielen perusteet

TIEA341 Funktio-ohjelmointi 1, kevät 2008

S BAB ABA A aas bba B bbs c

JOHDATUS TIETOKONETEKNIIKKAAN. Tietokoneiden loogisten toimintaperiaatteiden kuvaus kuvitteellisen tietokoneen avulla

v OPINTONSA ALOITTANEIDEN HENKILÖKOHTAINEN OPINTOSUUNNITELMA Humanististen tieteiden kandidaatin tutkinto 180 op

Transkriptio:

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