Harjoitusten vastaukset

Tietokoneen toiminta, Itseopiskelukurssi, HT 1 vast
HUOM: Katso nämä vastaukset vasta tehtyäsi itse tehtävät. Oppiminen tapahtuu pääasiassa tehtäviä ratkottaessa. Vastauksen katsominen heti kättelyssä on hyvän tehtävän hukkaanheittämistä oppimisen näkökulmasta.

  1. Korkean tason kieli vs. symbolinen konekieli. Oletetaan, että meillä on korkean tason kielellä (C, Java, Pascal) tehty ohjelma Simple, joka on käännetty TTK-91 koneen konekielelle.

    Missä fyysisesti erilaisissa tietokoneen komponenteissa ohjelman Simple muuttujan X arvo voi sijaita (TTK-91 koneessa) ohjelman suoritettaessa? Anna kaksi vaihtoehtoa. Perustele vastauksesi.
    i) Suorittimen rekistereissä (R0-R7) ja ii) muistissa symbolin x osoittamassa muistipaikassa.

    Anna seuraaviin kysymyksiin vastaukset TTK-91 koneen osalta erikseen kullekin em. kahdelle vaihtoehdolle.

    1. Millä konekäskyillä X:n arvon voi tulostaa?    i) out r1,=crt      ii)   load r1, x    out r1,=crt
    2. Millä konekäskyillä X:n osoitteen voi tulostaa?    i) ei voi    ii)   load r1, =x    out r1,=crt
    3. Millä konekäskyillä X:n arvoksi asetetaan luku 65?  i) load r1, =65    ii)   load r1, =65   store r1, x
    4. Millä konekäskyillä X:n osoitteeksi asetetaan luku 211?    i) ei voi    ii)  ei voi (kääntäjä valitsee)
    5. Millä konekäskyillä X:n arvo voidaan tallettaa muistiin muuttujan Y arvoksi?   
       i) store r1, y    ii) load r1, x    store r1,y


  2. Korkean tason kieli vs. symbolinen konekielen käskyt. Minkälaisen korkean tason kielen ohjelmakohdan toteuttamiseen voitaisiin käyttää TTK-91 koneen (pseudo)konekäskyä
    1. SUB            vähennyslasku, esim x-y
    2. MOD         jakojäännös: x/y, kryptografiassa avaimen modulo-aritmetiikka: a mod 31
    3. OR             loogisen lausekkeen totuusarvo: if (x<100 || x >1000)
    4. XOR              kryptograafinen salaus: secret = data ^ key;
    5. COMP        haarautuminen: if (a<10)..., loopit: for (i=0; i<10; i++) ....
    6. JUMP                loopissa paluu alkuun: for (i=0; i<10; i++) ....
    7. JNGRE           haarautumisen else-haara: if (a<10) then ... else ...
    8. DC              muuttujan tai vakion määrittely (pseudokäsky, kääntäjä käsittelee)
    Anna esimerkki kustakin tapauksesta.
    Miten pseudokonekäskyt eroavat tavallista konekäskyistä?
    Pseudokäskyistä ei tule suoritettavaa koodia.

  3.  
  4. Opettele käyttämään Titokone simulaattoria. Katso ohjeita kurssin aikataulusivulta http://www.cs.helsinki.fi/teemu.kerola/tito/itseopiskelukurssi/aikataulu.html kohdassa Kirjallisuutta ja muita viitteitä.
    1. Lue asennusohje ja asenna Titokone Windows tai Linux-järjestelmääsi. Esimerkiksi Windows-järjestelmässä kopio titokone.zip itsellesi sopivaan alihakemistoon (esimerkiksi nimeltään titokone) ja pura se sinne. Jos asennat Titokoneen verkkopalvelimelle (esim fs-1), niin se on käytettävissä miltä tahansa TKTL'n koneelta jatkossa.
    2. Kopio ttk-91 -esimerkkiohjelmista http://www.cs.helsinki.fi/teemu.kerola/tito/esimerkit ohjelma sum.k91 ja talleta se sopivaan alihakemistoon (esimerkiksi titokone/ttk91). Jos selain lisää tiedostonimeen ylimääräisen loppuliitteen (.txt), niin poista se.
    3. Käynnistä Titokone. Esimerkiksi Windows-järjestelmässä tuplaklikkaa tiedostoa titokone.bat alihakemistossasi (esimerkiksi titokone).
    4. Valitse asetuksista Options/Set language suomen kielinen käyttöliittymä, jollei se ole jo oletusarvoisesti päällä
    5. Laita molemmat käännösasetusoptiot (Asetukset/Muuta käännösasetuksia) päälle
    6. Tyhjennä simuloidun ttk-91 -koneen muisti Tiedosto/Tyhjennä muisti -komennolla.
    7. Valitse symbolisella konekielellä kirjoitettu ohjelma sum.k91 käyttöön Tiedosto/Avaa -komennolla ()
    8. Käännä ohjelma sum.k91 Tiedosto/Käännä -komennolla () konekieliseksi ohjelmaksi sum.b91. Käännös tapahtuu rivi kerrallaan -nappia napauttamalla. Katso kunkin rivin jälkeen tulostuvaa kommenttia kommentti-ikkunan ylärivillä. Lopulta voit kääntää koko tiedoston loppuun yhteen menoon -napilla.
    9. Mitkä ovat symbolien Done, KBD ja Luku arvot? Mihin muistipaikkaan muuttujan Summa arvo talletetaan suoritusaikana? Mikä on muuttujan Summa alkuarvo?
    10. Valitse suoritusasetuksista (Asetukset/Muuta suoritusasetuksia) "Suorita koodia rivi kerrallaan" () ja "Näytä lisäkommentteja suorituksen kulusta" ().
    11. Suorita ohjelma Tiedosto/Aja komennolla (). Anna syötteet 5, 4, 3 ja 0 yksi kerrallaan KBD-ikkunaan. Suorita ohjelmaa rivi kerrallaan -napilla ja tarkkaile, kuinka jokainen konekäsky vaihtaa koneen "tilaa" muuttamalla sen rekistereiden ja/tai muistin sisältöä. Kun/jos kyllästyt rivi kerrallaan suoritukseen, voit suorittaa koko ohjelman loppuun yhteen menoon (). Ohjelman suoritus pysähtyy silti aina, kun IN-käskyn avulla yritetään lukea näppäimistöltä KBD. Mikä arvo tulostui CRT-ikkunaan?         Annettujen lukujen summa 12
    12. Laita suoritusasetuksista muut optiot pois päältä, mutta pistä optio "Näytä animointi suoritettaessa" () päälle.
    13. Suorita ohjelma syötteillä 444, 333 ja 0. Ennen ensimmäisen luvun syöttämistä KBD-ikkunaan valitse Animaattorin yläpalkista sen suoritusnopeudeksi "Slow" ja jatka sitten suoritusta käskyjä yksi kerrallaan suorittaen (). Huomaa, kuinka jokaisen suoritettavan käskyn yhteydessä käsky ensin haetaan muistista käskyrekisteriin IR kyseisen konekäskyn osoitteen osoittamasta muistipaikasta. Mikä on käskyn "LOAD R1, Summa" lukuarvo rekisterissä IR?   Mikä on laitteen KBD "muistiosoite" MAR-rekisterissä?      "LOAD R1, Summa" = 36175883, KBD = 1
    14. Muuta ohjelmaa sillä tavoin, että annettujen lukujen summan asemesta lasketaankin niiden tulo. Voit editoida ohjelmaa joko suoraan Titokoneessa tai simulattorin ulkopuolella millä tahansa tekstipohjaisen tiedoston tuottavalla editorilla. Huomaa, että Titokoneessa tiedostoa editoidessa se aina päivittyy "automaattisesti" - kirjoittaen alkuperäisen tiedoston päälle!         ADD -> MUL, tulosta annettujen lukujen tulo
    15. Onneksi olkoon! Nyt osaat asentaa Titokoneen omaan ympäristöösi ja suorittaa sillä valmiiksi tehtyjä ttk-91 -ohjelmia. Osaat myös tehdä pieniä muutoksia valmiisiin ohjelmiin. Jatkossa tulet tietenkin tekemään ohjelmasi itse.

     
  5. Tämän viikon TitoTrainer tehtävät

Ylimääräisiä keskustelutehtäviä

  1. Tarvitseeko tietokoneessa olla aina suoritin (prosessori)? Entä muisti? Entä väylä? Entä kovalevy?

  2. Mikä ero on tiedon arvolla ja tiedon osoitteella? Milloin tiedolla ei ole arvoa? Milloin tiedolla ei ole osoitetta?

  3. Miksi Flash-muisti (esim. muistitikulla) näyttää yleensä kovalevyltä tietokoneessa? Onko se oikein/väärin?

  4. Anna kertauskysymystehtävän vastausvaihtoehtoja hyvine selityksineen seuraavaan kertauskysymykseen: "Mitkä seuraavista väitteistä liittyen Titokone simulaattoriin ovat totta?"
    1. Anna ainakin kolme vastausvaihtoehtoa, jotka ovat totta.
    2. Anna ainakin kolme vastausvaihtoehtoa, jotka eivät ole totta.
    3. Anna ainakin kaksi vastausvaihtoehtoa, jotka voivat ehkä olla totta tai sitten ei.
    Palauta vastausvaihtoehdot selityksineen ohjaajalle. Tee vastausvaihtoehdot ja selitykset sellaisiksi, jotta niiden käyttö olisi hyödyllistä muille kurssin opiskelijoille. Vastausta saatetaan käyttää uuden kertaustehtävän laadinnassa. Jos vastausta ei saa käyttää tähän tarkoitukseen, mainitkaa asiasta palautuksessa.