Tietokoneen toiminta, Kevät 2011, Harjoitus 2

Nämä tehtävät tehdään etukäteen ja käsitellään harjoituksissa 2. kurssiviikolla 24.1. - 28.1.2011.

Harjoitukset pohjautuvat verkkoluentoihin 1, 2 ja 3.

Tehtävä 4 edellyttää ainakin TitoTrainer2 järjestelmän käyttöä. Titokoneen asentaminen voi auttaa toiminnan hahmottamisessa ja helpottaa myös konekielen oppimista.

HUOM: Tehtävän yksi kohdassa e) on pieni muutos!

Tehtävät:

  1. Muistin osoitusmuodot.
    Oletetaan, että kukin käsky suoritetaan oheisten taulukoiden kuvaamasta tilanteesta alkaen. Anna kullekin käskylle tehollinen muistiosoite (effective address) ja joko muuttuneen rekisterin sisältö tai muuttuneen muistipaikan osoite ja sisältö. Jos jokin käsky ei ole laillinen, kerro minkä takia näin on.
    Rekisterit
    Muistialue   Symbolitaulu
    Symbolitaulu, muistialue ja rekisterit
    R0 104   0     Tbl 200
    R1 10   ...     X 10
    R2 201   10 200   One 1
    R3 200   11 300      
    R4 11   ...        
    R5 0   200 3000      
    SP=R6     201 10      
    FP=R7     ...        
          LIMIT        
    1. LOAD R4, 200
    2. LOAD R3, One(R1)
    3. LOAD R3, =One(R1)
    4. STORE R0, One(R1)
    5. STORE R2, @1(R3)
    6. LOAD R0, @R1
    7. LOAD R1, @(R1)
    8. STORE R1, @(R1)
    9. STORE R0, R1
    10. LOAD R1, =X(R0)
    11. STORE R2, =One

  2. Ttk-91 tietokone ja sen simulaattori.
    1. Mitä tietotyyppejä voidaan käsitellä ttk-91 tietokoneessa konekäskytasolla? Onko olemassa tietotyyppejä, joita voidaan käsitellä konekäskytasolla nykyään käytössä olevilla tietokoneilla mutta ei ttk-91:ssä?
    2. Millä eri tavoin voidaan muistissa olevaan tietoon viitata ttk-91 tietokoneessa konekäskytasolla?
    3. Voidaanko samalla konekäskyllä muuttaa sekä rekisterin että muistin sisältöä? Miten tai miksi ei?
    4. Kuinka suuri kokonaisluku mahtuu ttk-91 koneen käskyn vakio-osaan? Mitä tehdä jos tarvitaan suurempaa lukua?
    5. Oletetaan, että ttk-91 rekistereiden lukumäärä olisikin 256 eikä 8. Miten tämä vaikuttaisi konekäskyn rakenteeseen?
    6. Oletetaan, että ttk-91 arkkitehtuuriin lisätään 46 uutta konekäskyä eri pituisten kokonais- ja liukulukujen, totuusarvojen, merkkien ja merkkijonojen käsittelyyn. Miten tämä vaikuttaisi konekäskyn rakenteeseen?
       
  3. Taulukot ja tietueet
    1. Useimmat ohjelmointikielet toteuttavat 2-ulotteiset taulukot riveittäin. Miksi näin tehtäisiin? Säästetäänkö tällä tavoin muistitilaa? Onko ratkaisu nopeampi kuin sarakkeittain tallennus? Miksi?
    2. Oletetaan, että sinulla on 1-ulotteinen taulukko Person, jonka alkiot ovat 5-kenttäisiä tietueita {id, height, weight, grade, level}. Anna ttk-91 konekäskyt, joilla toteutetaan sijoituslause "X = Person[i].grade".
    3. Anna ttk-91 konekäskyt, joilla toteutetaan sijoituslause "X = T3D[i][j][k]", kun T3D on kolmiulottteinen taulukko, joka on talletettu riveittäin.
  4. [2 htp] Titokone ja TitoTrainer
    1. Opettele käyttämään Titokonetta ja TitoTraineria.
    2. Tee tason A TitoTrainer tehtävät a-050, a-100, a-110 ja a-150. Halutessasi voit ajaa tekemäsi (TitoTrainer-tehtävässä määritellyn) ohjelman ensin Titokoneessa ja sitten vasta TitoTrainerissa. Tällä tavoin saat parempia virheilmoituksia ja ohjelman kehittäminen on helpompaa. Käytä tarvittaessa omaa opintopiiriä konsultointiapuna, mutta yritä selvitä tehtävistä itsenäisesti.
    3. Halutessasi voit samalla kertaa tehdä loputkin tason A TitoTrainer tehtävät.


Tiina.Niklander@cs.helsinki.fi