TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op

Slides:



Advertisements
Samankaltaiset esitykset
Tietokonetekniikka 4 Tieto ja tiedon talletus
Advertisements

15. Loogiset operaatiot.
Tietokonetekniikka 5 Operandien osoittaminen ja tietokoneen käskykanta
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Tietokonetekniikka 3 Tietokoneen Rakenteen ja toiminnan perusteet
JavaScript (c) Irja & Reino Aarinen, 2007
VBA –ohjelmoinnin perusteet
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
22. Taulukot.
Rakenteinen ohjelmointi
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.
Ohjelma on kokoelma toimintaohjeita annetun tehtävän ______________________. Ohjelmassa on peräkkäisten toimintojen lisäksi yleensä valintaa ja _____________.
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.
2. Vuokaaviot.
13. Hyvä ohjelmointitapa (osa 1)
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
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
Tietokoneohjelman suoritus opintojakso Olioajattelu ja –ohjelmointi, osa I Hans Nieminen Syksy 2013.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op ALU.
11. Javan toistorakenteet
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
22. Taulukot.
Pinon ylivuodon estäminen Mikko Toivonen & Antti Mattila.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Tietokoneen arkkitehtuuri ja konekieli Tietotekniikan perusteet Pekka Orponen.
Logiikka.
Visual Basic -ohjelmointi
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Visual Basic -ohjelmointi
Ohjelmointi 1. toinen luento1 Taulukot n Kiinteät taulukot: alkioiden määrä tiedetään Dim intCount(12) As Integer 0 indeksit saavat arvoja 0-12 (Option.
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
Aiheet ● Ohjelmointikielten kääntäminen ● Kieliopin määrittely ● Kääntäjän toiminta.
Ohjausjärjestelmien jatkokurssi
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)
13. Loogiset operaatiot.
Tietokoneen toiminnasta ja rakenteesta
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
Ohjelmien suunnittelu
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
16. Ohjelmoinnin tekniikkaa
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
16. Ohjelmoinnin tekniikkaa
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 Jokaiselle prosessorityypille on oma konekieli ja siten myös assembly kieli Korkeantason kieli Virtual machine Assembly kieli Konekieli Tietokonealusta Loogiset piirit

Tietokoneen toiminta HACK tietokone ’Normaali’ –tietokone Hae A-käsky Suorita A-Käsky Hae C-käsky Suorita C-Käsky Toista alusta ’Normaali’ –tietokone Hae käsky Suorita käsky

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 (varaa niille paikka muistista) (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 // negatoitu ehto (not x) // D = !x //if condition { // jos x=0 -> D=!x=-1 (bin) // jos 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 Assemblynä // paluuosoite aliohjelmasta, // joka tallennetaan takaisin – // muuttujaan @PALUUOSOITE D=A @takaisin M=D @DRAW_LETTER 0;JMP (PALUUOSOITE) // tänne Code block 2 Assemblynä @PALUUOSOITE2 (PALUUOSOITE2) // vai tänne Code block 4 Assemblynä Code block 1 Draw_letter(A); Code block 2 Code block 4 void Draw_letter(Char x) { Code block 3 } // minne? miten palataan? // jossain ROM muistissa (DRAW_LETTER) Code block 3 Assemblynä @takaisin // paluuosoite A=M // RAM muistista 0;JMP

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