Tietokoneen toiminta, 2 ov             Kurssikuulustelu 15.12.2003  

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, synt. aika,
  kurssin nimi, nimikirjoitus ja sivunumero.
  1. [11 p] Käännös ja linkitys
    1. [3 p] Käännösaikana (esim. ttk-91 symbolisen konekielen käännös) lähdekoodi tulee käydä läpi useamman kuin yksi kertaa. Miksi? Anna kuvaava esimerkki.
    2. [3 p] Milloin kannattaa käyttää staattista linkitystä dynaamisen linkityksen asemesta?
      Mitä etua sillä saavutetaan?
    3. [3 p] Windows-järjestelmissä on käytössä (ainakin) kaksi erilaista tapaa tehdä dynaaminen linkitys.
      Miten ne eroavat staattisesta linkityksestä? Miten ne eroavat toisistaan?
    4. [2 p] Oletetaan, että sinulla on suurehko tietokonepeli, jossa on 8 erilaista tasoa pelaajan eri taitoasteille.
      Olisiko järkevämpi käyttää staattista vai dynaamista linkitystä? Miksi?

  2. [11 p] Tiedon esitysmuodot
    1. [1 p] Anna luku -27 8-bittisessä 2-komplementin esitysmuodossa (twos complement representation)
    2. [1 p] Anna luku -27 8-bittisessä 1-komplementin esitysmuodossa (ones complement repr.)
    3. [1 p] Anna luku -27 8-bittisessä etumerkkibitin sisältävässä esitysmuodossa (sign magnitude repr.)
    4. [1 p] Anna luku -27 8-bittisessä 127-vakiolisäyksen esitysmuodossa (biased repr.)
    5. [4 p] Mitä desimaalilukua 32-bittinen IEEE:n standardin mukainen bittiesitys 0xC1600000 tarkoittaa? (0x-etuliite tarkoittaa siis, että kyseessä on heksadesimaaliesitys)
    6. [3 p] Mitä tarkoittavat käsitteet "Big Endian" ja "Little Endian"? Anna esimerkki.

  3. [12 p]  Konekäskyjen suoritus.
    1. [2 p] Miten symbolinen konekäsky  "JUMP  LOOP" esitetään muistissa suoritusaikana?
    2. [4 p] Miten suorittimella tapahtuu konekäskyä "JUMP LOOP" suoritettaessa käskyn suoritussyklin eri vaiheissa?
    3. [3 p] Määrittele käsite keskeytys (exception, interrupt). Minkä tyyppisiä keskeytyksiä on olemassa?
      Miten keskeytykset käsitellään suorittimella?
    4. [3 p] Mitä keskeytyksiä voi laitteistossa tapahtua konekäskyn "JUMP LOOP" suorituksen aikana?

  4. [12 p]  Konekielinen ohjelmointi. Kaksi-ulotteinen taulukko Taulu[0..4, 0..5] ja muuttujat X, I ja J oletetaan määritellyksi pääohjelmatasolla. Taulukossa Taulu on siis 5 riviä ja kussakin rivilla 6 saraketta. Taulukko talletetaan riveittäin. Toteuta seuraavien tehtävät TTK-91 koneen symbolisella konekielellä. Voit (epärealistisesti) olettaa, että I:n ja J:n arvot ovat sallituissa rajoissa.
    1. [2 p] Tulosta taulukon Taulu alkion Taulu[3, 2] arvo ja osoite.
    2. [2 p] Tulosta taulukon Taulu alkion Taulu[I, J] arvo ja osoite.
    3. [2 p] Sijoita muuttujan X arvo taulukon Taulu alkion Taulu[I, J] arvoksi.
    4. [3 p] Alusta taulukko Taulu aliohjelmaa Init(Arr, DimI, DimJ) käyttäen. Parametri Arr on viiteparametri ja parametrit DimI ja DimJ ovat arvoparametreja. Arr on alustettava taulukko ja DimI ja DimJ ovat k.o. taulukon dimensiot. (Huomaa, että sinun ei tarvitse toteuttaa tätä aliohjelmaa Init)
    5. [3 p] Oletetaan nyt, että taulukko Taulu onkin nyt talletettu sarakkeittain.
      Tulosta taulukon Taulu alkion Taulu[I, J] arvo ja osoite.
Noudata luennolla ja harjoituksissa esitettyjen suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.

TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, OR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC