TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op

Slides:



Advertisements
Samankaltaiset esitykset
Excel ja makrot Excel koostuu kahdesta eri osasta Alt+F11 VBA
Advertisements

Copyright  Hannu Laine Bittitason-operaatiot Hannu Laine.
Tietokonetekniikka 4 Tieto ja tiedon talletus
15. Loogiset operaatiot.
Tietokonetekniikka 5 Operandien osoittaminen ja tietokoneen käskykanta
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Tietokonetekniikka 3 Tietokoneen Rakenteen ja toiminnan perusteet
JavaScript (c) Irja & Reino Aarinen, 2007
VBA –ohjelmoinnin perusteet
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Sovellusohjelman suunnittelu & toteutus
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
Ehto- ja toistolauseet
E-Commerce 2010: Business, Technology, Society 6e
5.3.3 Koodin generointi Koodin generointi tarkoittaa objektikoodin eli konekielisen ohjelman tuottamista. Generointi jakautuu kolmeen osatehtävään: 1.Muistin.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
Konekieli.
13. Hyvä ohjelmointitapa (osa 1)
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op ALU.
11. Javan toistorakenteet
XNA peliohjelmointi. XNA Perustuu Microsoftin kehittämään.NET- arkkitehtuuriin ja C#-kieleen. XNA:lla tehdyt pelit toimivat Windows ja XBOX360-alustoilla.
Ohjelmoinnin käyttötarkoituksia Miten ohjelmassa edetään.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
Pinon ylivuodon estäminen Mikko Toivonen & Antti Mattila.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Johdatus ohjelmointiin – C kielen peruselementit Tutkijayliopettaja Manne Hannula Opetusharjoittelu (ohjaava opettaja Jukka Jauhiainen)
Tietokoneen arkkitehtuuri ja konekieli Tietotekniikan perusteet Pekka Orponen.
Tietokoneen rakenne matalalla tasolla KYMENLAAKSON AMMATTIKORKEAKOULU Jarkko Ansamäki, kevät 2002.
Visual Basic -ohjelmointi
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Kontrollirakenteet laajemmin
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
Visual Basic -ohjelmointi
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
Ohjelma Mikro-ohjelmointi Symbolinen konekieli Osoitustavat.
Mikro-ohjelmoitava tietokone
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembler.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli.
String-vertailusta ja Scannerin käytöstä (1/2)
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
13. Loogiset operaatiot.
Tietokoneen toiminnasta ja rakenteesta
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
7. Näytölle tulostaminen
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
12. Javan toistorakenteet
12. Javan toistorakenteet
4. Ohjelmointi konekielellä (TTK-91 ja Titokone)
Tietokoneen toiminta (2 ov)
5. Aliohjelmien toteutus
2. TTK-91 –tietokone 2.0 Mikä TTK-91? Ja mitä hyötyä siitä on?
3. TTK-91-käskykanta Symbolisen konekielen tavalliset käskyt
4. Ohjelmointi konekielellä (TTK-91 ja Titokone)
13. Loogiset operaatiot.
12. Javan toistorakenteet
Tietokoneen toiminnasta ja rakenteesta
3. TTK-91-käskykanta Symbolisen konekielen tavalliset käskyt
Jakso 4 Aliohjelmien toteutus
Esityksen transkriptio:

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli

Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne määrää sen minkälaisia käskyjä sille voidaan antaa -> käskykanta (Instruction set) Konekieli on joukko binäärisiä ”sanoja” jotka vastaavat prosessorin käskyjä Assembly kieli antaa binäärisille bittijoukoille paremmin muistettavat vastineet, esim. 1111110111001000 M=M-1 Näistä asioista lisää myöhemmin kurssilla… Korkeantason kieli Virtual machine Assembly kieli Konekieli Tietokonealusta Loogiset piirit

Tietokoneen rakenne - väylä

Muisti ROM muisti, ladataan konekielinen ohjelma RAM muisti, käytetään ohjelman parametrien tallentamiseen I/O laitteet, näyttö ja näppis Memory-mapped I/O I/O laitteet kytketty samaan väylään kuin muisti Laitteilla oma ”muistiosoite” Meillä RAM muistin jatkeena

RAM muisti Osoitteet 0 - 16383 (2^14 osoitetta, 14 bittinen osoite) Normaalia RAM muistia 16K Osoitteet 16384 - 24575 Näyttö – 8192 (8k) muistipaikkaa 256 riviä, 512 pikseliä per rivi Mustavalkoinen näyttö – Pikselin väri voidaan tallentaa yhteen bittiin 256*512*1 = 131072 bittiä Yhteen muistipaikkaan voidaan tallentaa 16 bittiä 131072/16 = 8192 muistipaikkaa Ei voida lukea, muistipaikkaan bittejä kirjoittamalla (muuttamalla 0 -> 1) saadaan pikseli mustaksi Osoite 24576 Näppäimistön muistiosoite Voidaan lukea mitä näppäintä on painettu

Esimerkkiohjelma // C# koodia // Adds 1+...+5. int i = 1; int sum = 0; while (i <= 5){ sum += i; Console.WriteLine(sum); i++; } // PSEUDO Assembly koodia Alusta muuttujat i=1 ja sum=0 (LOOP) Laske i-5 Jos ALU output > 0 niin indeksi liian suuri, hyppää LOPPU:un muuten (ALU output <= 0) kasvata summaa kasvata indeksiä hyppää LOOP:iin (LOPPU) Lopeta ohjelma

// Hack assembly koodi @i // assembler -kääntäjää valitsee muistipaikan, jonne i tallennetaan M=1 // i=1 (sijoitetaan indeksin aloitusarvo yo. muistipaikkaan) @sum // assembler -kääntäjää valitsee muistipaikan, jonne sum tallennetaan M=0 // sum=0 (alustetaan summa nollaksi tallentamalla 0 sum -muuttujan muistipaikkaan) (LOOP) // määrittää hyppyosoitteen @i // Asetetaan A rekisterin arvoksi i -parametrin muistipaikka D=M // D=M[i] haetaan RAM muistin (M) osoitteesta i lukuarvo, tallennetaan D rekisteriin @5 // asetetaan A rekisteriin arvo 5 D=D-A // D=i-5 käytetään A rekisterin arvoa vakiona, ja vähennetään se indeksin i arvosta, ja tallennetaan D rekisteriin @END // asetetaan A rekisteriin mahdollinen hyppy osoite (PC:n uusi arvo) eli (END) rivin alapuolella olevan rivin osoite D;JGT // If (i-5)>0 goto END // tutkitaan onko D positiivinen (jolloin hypätään (END) -kohtaan) vai negatiivinen (ei hypätä, vaan jatketaan seuraavalle riville) @i // Asetetaan A rekisteriin i:n osoite D=M // D=M[i] haetaan i:n arvo muistista osoitteesta M[i] ja tallennetaan D rekisteriin @sum // asetetaan A rekisterin arvoksi sum parametrin osoite M=D+M // sum=i+sum // haetaan muistista M[sum] arvo yo. osoitteesta, lisätään se D rekisterin arvoon ja tallennetaan muistiin M[sum] osoitteeseen M=M+1 // i=i+1 // haetaan i:n arvo yo. osoitteesta, lisätään siihen 1 ja tallennetaan samaan osoitteeseen @LOOP // asetetaan A rekisteriin (LOOP) tekstin alapuolella olevan koodirivin numero (muistipaikka ROM muistissa) 0;JMP // Goto LOOP // lasketaan "nolla", ja riippumatta laskutoimituksen tuloksesta asetetaan ohjelmalaskurin (PC):n arvoksi yo. ROM muistipaikka (END) // määrittää hyppyosoitteen @END // Kirjan tekijöiden tapa lopettaa ohjelman suoritus (menemällä ikuiseen silmukkaan lopuksi) 0;JMP // Infinite loop

Assembly -käskyt A-Instruction @value Missä value on ei-negatiivinen kokonaisluku Binäärisenä: 0vvv vvvv vvvv vvvv Käytetään lukuarvon tallentamiseen A rekisteriin A rekisterin arvoa voidaan käyttää kolmella eri tavalla Tallennetaan vakio arvo (A = value) Valitaan RAM muistipaikka (register = RAM[A]) Valitaan ROM muistin seuraava suoritettava käsky (muistipaikka) (PC = A) A-Instruction:ia täytyy seurata C-Instruction, joka määrää mitä A rekisteriin tallennetulla lukuarvolla tehdään

Assembly -käskyt A-Instruction @47 // A=47 D=A // D=47 D=M // D=RAM[47] 0;JMP // Ladataan PC:lle uusi arvo (ROM muistin muistipaikka, josta ohjelman suoritusta jatketaan)

Assembly -käskyt C-Instruction dest=comp;jump dest = M , D , MD , A , AM , AD , AMD tai null Kertoo minne laskutoimituksen comp tulos tallennetaan jump = JGT , JEQ , JGE , JLT , JNE , JLE , JMP tai null Kertoo millä ehdolla hypätään (ladataan ohjelmalaskurille (PC) uusi arvo) comp = 0 , 1 , -1 , D , A , !D , !A , -D , -A , D+1 , A+1 , D-1, A-1 , D+A , D-A , A-D , D&A , D|A , M , !M , -M ,M+1, M-1 , D+M , D-M , M-D , D&M , D|M Kertoo ALU:lle mikä operaatio suoritetaan Ja minkä rekisterin/muistipaikan arvoja käytetään operaatiossa

dest=comp;jump @47 // 0000000000101111 D=A // 111accccccdddjjj @47 // 0000000000101111 D=A // 111accccccdddjjj D=M // 111accccccdddjjj 0;JMP // 111accccccdddjjj comp dest jump Binäärinen: 1 1 1 a c1 c2 c3 c4 c5 c6 d1 d2 d3 j1 j2 j3 C-instruction Not used

Comp(ute) (a=0) c1 c2 c3 c4 c5 c6 (a=1) 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 -1 1 1 1 0 1 0 D 0 0 1 1 0 0 A 1 1 0 0 0 0 M !D 0 0 1 1 0 1 !A 1 1 0 0 0 1 !M -D 0 0 1 1 1 1 -A 1 1 0 0 1 1 -M D+1 0 1 1 1 1 1 A+1 1 1 0 1 1 1 M+1 D-1 0 0 1 1 1 0 A-1 1 1 0 0 1 0 M-1 D+A 0 0 0 0 1 0 D+M D-A 0 1 0 0 1 1 D-M A-D 0 0 0 1 1 1 M-D D&A 0 0 0 0 0 0 D&M D|A 0 1 0 1 0 1 D|M

Hyppykäskyt j1 j2 j3 (out < 0) (out = 0) (out > 0) Mnemonic Effect 0 0 0 null No jump 0 0 1 JGT If out > 0 jump 0 1 0 JEQ If out = 0 jump 0 1 1 JGE If out ≥ 0 jump 1 0 0 JLT If out < 0 jump 1 0 1 JNE If out ≠ 0 jump 1 1 0 JLE If out ≤ 0 jump 1 1 1 JMP Jump Mnemonic ≈ muistisääntö (assembly kielinen toteutus)

Dest(ination) d1 d2 d3 Mnemonic Destination (minne tallennetaan) 0 0 0 null Operaation tulosta ei tallenneta 0 0 1 M Memory[A] (RAM muistipaikka A) 0 1 0 D D register 0 1 1 MD Memory[A] and D register 1 0 0 A A register 1 0 1 AM A register and Memory[A] 1 1 0 AD A register and D register 1 1 1 AMD A register, Memory[A], and D register

WHILE logiikka (LOOP) // D=10-y tai D=y-10 //while condition { D // not condition // tallennetaan D:hen False // ehto, jolla hypätään @END D;JEQ // D≠0 code block 1 //y++ etc. @LOOP 0;JMP (END) // D=0 false code block 2 //while condition { //while (10-y<0) { while (y<10) { code block 1 // esim. y++ } code block 2 Assembly kielen käytäntö True = -1 = (1111111111111111)2 False = 0 = (0000000000000000)2

IF logiikka D // not condition // D = !x //if condition { // if x=0 -> D=!x=-1 (bin) // if x=-1 -> D=!x=0 (bin) @IF_TRUE D;JEQ // if D=0 then jmp // else x=0 (D≠0) code block 2 @END 0;JMP (IF_TRUE) // (x != 0) code block 1 (END) code block 3 //if condition { if (x != 0) { code block 1 } else { // x=0 code block 2 code block 3 Assembly kielen käytäntö True = -1 = (1111111111111111)2 False = 0 = (0000000000000000)2

Aliohjelmakutsu Code block 1 // aliohjelman paluuosoite, // joka tallennetaan takaisin – // muuttujaan @PALUUOSOITE D=A @takaisin M=D @ALIOHJELMA 0;JMP (PALUUOSOITE) //tänne Code block 2 …… (ALIOHJELMA) Code block 3 @takaisin //haetaan paluuosoite A=M //asetetaan hyppyä varten Code block 1 Draw_letter(A); Code block 2 void Draw_letter(Char x) { Code block 3 } // minne? miten palataan?