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

Samankaltaiset tiedostot
Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Tiedon sijainti suoritusaikana (3) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Miten tietoon viitataan? (4)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Tiedon sijainti suoritusaikana. Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Kertausluento luennoista 1-3 1

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

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

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Jakso 4 Aliohjelmien toteutus

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: tietotyypit (2)

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: rekisterit

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

Luento 2 TTK-91 tietokone ja sen simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91 (1) TTK-91 laitteisto

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Jakso 10 Ohjelman suoritus järjestelmässä

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Monipuolinen esimerkki

Ohjelmointiharjoituksia Arduino-ympäristössä

Luento 1 Tietokonejärjestelmän rakenne

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

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

13. Loogiset operaatiot 13.1

Luento 1 Tietokonejärjestelmän rakenne

Tietokoneen toiminta, K Tavoitteet (4)

13. Loogiset operaatiot 13.1

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

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

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

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

Käännös, linkitys ja lataus

Jakso 10 Ohjelman suoritus järjestelmässä

Tulkinta ja emulointi

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

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

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Java-kielen perusteet

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

Java-kielen perusteita

Luento 5 (verkkoluento 5) Suoritin ja väylä

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

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

1. Keskusyksikön rakenne

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

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

Tietokoneen toiminta (Computer Organization I)

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

Muistihierarkia Kiintolevyt I/O:n toteutus

Tietokoneen toiminta (Computer Organization I)

Luento 11 Tulkinta ja emulointi

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

TIETORAKENTEET JA ALGORITMIT

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

11. Javan valintarakenteet 11.1

Sisältö. 22. Taulukot. Yleistä. Yleistä

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Java kahdessa tunnissa. Jyry Suvilehto

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

Transkriptio:

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC LOAD, =X LOAD R2, X int x =; symbolin X arvo muuttujan X arvo 230 345 556 Muuttujan X osoite on 230 Muuttujan X arvo on Symbolin X arvo on 230 X=230: 8765 222 symbolit ovat yleensä olemassa 998 vain käännösaikana! Virheilmoituksia varten symbolitaulua pidetään joskus yllä myös suoritusaikana 2 Xptr DC 0 X DC LOAD, =X STORE, Xptr LOAD R2, X LOAD R3, @Xptr Tieto ja sen osoite (5) Xptr=225: Muuttujan X osoite on 230 Muuttujan X arvo on Osoitinmuuttujan X=230: (pointterin) Xptr osoite on 225 Osoitinmuuttujan Xptr arvo on 230 Osoitinmuuttujan Xptr osoittaman kokonaisluvun arvo on 230 345 556 8765 222 998 3 Osoitinmuuttujat Muuttujia samalla tavoin kuin kokonaislukuarvoiset muuttujatkin Arvo on jonkun tiedon osoite muistissa globaalin monisanaisen tiedon osoite taulukot, tietueet, oliot kasasta (heap) dynaamisesti (suoritusaikana) varatun tiedon osoite Pascalin tai Javan new operaatio palauttaa varatun muistialueen osoitteen (tai virhekoodin, jos operaatiota ei voi toteuttaa) aliohjelman tai metodin osoite osoite ohjelmakoodiin! 4 Globaali data (2) Globaalit muuttujat ja muut tietorakenteet sijaitsevat muistissa ohjelmakoodin jälkeen muuttujat tilan varaus viittaaminen int X = 25; short Y; float Ft; X DC 25 ; alkuarvo = 25 Y DC 0 fbig DC 1 ; 1=true, 0=false LOAD STORE char Ch; char Str[] = Pekka ; boolean fbig;, X R2, Y int a, b, c; b = 34; a = b + 5 * c; Aritmeettinen lauseke (2) tilan varaus A DC 0 B DC 0 C DC 0 koodi LOAD, =34 STORE, B LOAD, B LOAD R2, C MUL R2, =5 ADD, R2 STORE, A 5 6 Luento 3, konekiel. ohjelmointi 1

Globaalin taulukon tilan varaus ja käyttö (2) int X, Y; int [] Taulu = new int [30]; X = 5; Y = Taulu[X]; X: Y: Taulu: X DC 0 Y DC 0 Taulu DS 30 LOAD, =5 STORE, X LOAD, X LOAD R2, Taulu() 7 Tietueen osoite on sen ensimmäisen sanan osoite Globaalien tietueiden tilan varaus ja käyttö (3) int X; public class Opisk { public int Pituus, Paino; } Opisk Tauno = new Opisk (); X = Tauno.Paino X: Opisk: pituus paino Kentän Paino suhteellinen osoite tietueen Opisk sisällä X DC 0 Opisk DS 2 Pituus EQU 0 Paino EQU 1 LOAD,=Opisk LOAD R2, Paino() 8 BASE LIMIT 0: iso: Muistitilan käyttö yhdelle ohjelmalle (6) 0: Ohjelmakoodi SP HP Globaalit muuttujat ja tietorakenteet Pino (stack) aliohjelmien toteuttamista varten (myös paikalliset muuttujat) Vapaa muistitila Keko (heap) dynaamisesti (esim. Javan new ) varattavia muistialueita varten (ei KOKSI:ssa) 9 Kontrolli - valinta konekielellä (4) Ehdoton hyppy JUMP, CALL, EXIT, SVC Hyppy perustuen laiterekisterin arvoon JZER, JPOS,... Hyppy perustuen aikaisemmin asetetun tilarekisterin arvoon COMP JEQU, JGRE, Ongelma vai etu: ttk-91:ssä kaikki ALU käskyt asettavat tilarekisterin ADD, SUB, MUL, DIV, NOT, AND, OR, XOR, SHL, SHR COMP R2, LIMIT JEQU LOOP 10 If-then-else -valinta (1) Toistolausekkeet (2) if (a<b) x = 5; else x = y; Else Done LOAD, A COMP, B JNLE Else LOAD, =5 STORE, X JUMP Done LOAD, Y STORE, X NOP For-step-until -silmukka Do-until -silmukka Do-while -silmukka While-do -silmukka? ehto silmukan alussa? ehto silmukan lopussa 11 Luento 3, konekiel. ohjelmointi 2

For lauseke (1) LOAD, =20 STORE R2, T() X = 14325; Xlog = 1; Y = 10; while (Y < X) { Xlog++; Y = 10*Y } While-do -lauseke (1) LOAD, =14325 STORE, X LOAD R3, =1 ; R3=Xlog LOAD R2, =10 ; R2=Y While COMP R2, JNLES Done ADD R3, =1 MUL R2, =10 JUMP While Done STORE R3, Xlog ; talleta tulos 13 14 Case lauseke (1) Switch (lkm) { case 4: x = 11; break; case 0: break; default: x = 0; break; } Vrt4 LOAD, Lkm COMP,=4 JNEQ Vrt0 LOAD R2, =11 JUMP Cont Vrt0 COMP, =0 JNEQ Def JUMP Cont Def Cont LOAD R2,=0 NOP 15 Koodin generointi (9) Kääntäjän viimeinen vaihe voi olla 50% käännösajasta Tavallinen koodin generointi alustukset, lausekkeet, kontrollirakenteet Optimoidun koodin generointi käännös kestää kauemmin suoritus tapahtuu nopeammin milloin globaalin muuttujan X arvo kannattaa pitää rekisterissä ja milloin ei? Missä rekisterissä X:n arvo kannattaa pitää? 16 Optimoitu For lauseke (3) LOAD, =20 ; i LOAD R2, =0 ; 0 Loop STORE R2, T() COMP, =50 2 vs. 272 suoritettua käskyä! Mitä eroja? Onko tämä OK? LOAD, =20 STORE R2, T() 17 Virhetilanteisiin varautuminen (3) Suoritin tarkistaa käskyn suoritusaikana integer overflow, ADD, R2 ; overflow?? divide by zero,... DIV R4, =0 ; divide-by-zero Generoidut konekäskyt tarkistavat ja explisiittisesti aiheuttavat keskeytyksen tai käyttöjärjestelmän palvelupyynnön tarvittaessa index out of bounds, bad method, bad operand, ihan mitä vain haluat testata! LOAD R3, Tsize ; tarkista COMP, R3 JLES IndexOK SVC SP, =BadIndex Index OKADD R2, Taulu() ; = 345 000?? 18 Luento 3, konekiel. ohjelmointi 3

Taulukon indeksitarkistus T DS 50 Tsize DC 50 ;koko LOAD, =20 ok1 ok2 JNNEG, ok1 SVC SP(=BadIndex) COMP,Tsize JLES ok2 SVC SP(=BadIndex) STORE R2, T() ; 50 OK! 19 Taulukon alaindeksi ei ala nollasta (2) T DS 30 ; 30 alkiota Tlow DC 20 ;alaraja Thigh DC 50 ;yläraja+1 indeksitarkistukset... LOAD, =20 T: LOAD T[20], I T+1: SUB T[21], Tlow STORE R2, T() T+29: T[49] 20 2-ulotteiset taulukot (6) int[][] T = new int[4] [3]; Y = T[i][j]; T: T[0][0] T[0][1] T: 0,0 0,1 0,2 T[0][2] T[1][0] 1,0 1,1 1,2 T[1][1] 2,0 2,1 2,2 T[1][2] T[2][0] 3,0 3,1 3,2 T[...][...] T DS Trows DC 4 Tcols DC 3 I: 1, J: 2 MULT, Tcols ADD, J LOAD R2, T() Tarkistukset.? 21 Moni-ulotteiset taulukot (3) Talletus riveittäin C, Pascal, Java? Talletus sarakkeittain Fortran 3- tai useampi ulotteiset samalla tavalla! T: T[0][0] T[1][0] T[2][0] T[3][0] T[0][1] T[1][1] T[2][1] T[...][...] 22 : -1 R2: 132 R2: 0 R2: 77 R2: 33 Linkitetty lista (6) First Data Next Data Next Data Next 2-sanainen tietue First=200: 211 list_sum.k91 211: 33 Data EQU 0 ; suht. osoite Next EQU 1 Sum DC 0 255 Main LOAD, First ; ptrrec JNEG, Done 222: 55 LOAD R2,=0 ; sum -1 Loop ADD R2, Data() LOAD, Next() 255: 44 JNNEG, Loop Done STORE R2, Sum 222 SVC SP, =HALT Monimutkaiset tietorakenteet 2-ulotteinen taulukko T, jonka jokainen alkio on tietue, jossa neljä kenttää: pituus ikä viime vuoden palkka kunakin kuukautena viime vuoden töissäolopäivien lukumäärä kunakin kuukautena Talletustapa? Viitteet? X = T[yliopNum][opNum].palkka[kk]; 23 24 Luento 3, konekiel. ohjelmointi 4

EDSAC (Electronic Delay Storage Automatic Computer) Ensimmäinen toimiva todellinen tietokone ohjelma ja data samassa muistissa Maurice Wilkes, Cambridge University 1949 256 sanan muisti elohopeasäiliöteknologia 35-bitin sanat 25 EDSAC Laitteisto Muisti 26 EDSAC Simulator Symbolinen konekieli -- Jakson 3 loppu -- Konekielen operandien lukumäärän vaikutus käskyjen lukumäärään http://www.dcs.warwick.ac.uk/~edsac/ Konekieli 27 Fig. 9.3 [Stal99] 28 Luento 3, konekiel. ohjelmointi 5