581305-6 Tietokoneen toiminta, 4 op, erilliskoe 17.4.2007   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [9 p] Käännös ja linkitys
    1. Käännösaikana (esim. ttk-91 symbolisen konekielen käännös) lähdekoodi tulee käydä läpi useamman kuin yhden kerran. Miksi? Anna kuvaava esimerkki.
    2. Milloin kannattaa käyttää staattista linkitystä dynaamisen linkityksen asemesta?
      Mitä etua sillä saavutetaan? Anna kuvaava esimerkki.
    3. Windows-järjestelmissä on käytössä (ainakin) kaksi erilaista tapaa tehdä dynaaminen linkitys.
      Miten ne eroavat staattisesta linkityksestä? Miten ne eroavat toisistaan?
    4. Oletetaan, että sinulla on suurehko tietokonepeli, jossa on 21 erilaista tasoa pelaajan eri taitoasteille.
      Olisiko järkevämpi käyttää staattista vai dynaamista linkitystä? Miksi?
       
  2. [9 p] Konekäskyjen esitysmuoto ja suoritus. Seuraavaksi suoritettava konekäsky "MUL R0, T(R1)" on muistipaikassa 200, operaation MUL operaatiokoodi on desimaaliluku 19, taulukon T alkuosoite muistissa on 500, rekisterin R0 arvo on 33 ja rekisterin R1 arvo on 55.
    1. Millainen on ttk-91 koneen käskyrakenne ja mitä tietoja mihinkin kenttään talletetaan? Anna konekäskyn
      "MUL R0, T(R1)" esitysmuoto muistissa. Anna kenttien pituudet ja kunkin kentän sisältö desimaalilukuna.
    2. Mitä suorittimella tapahtuu konekäskyä "MUL R0, T(R1) " suoritettaessa käskyjen suoritussyklin eri vaiheissa? Montako muistiviitettä tapahtuu, milloin ne tapahtuvat, mihin muistiosoitteeseen ne kohdistuvat ja ovatko ne luku- vai kirjoitusoperaatioita?
       
  3. [9 p] Keskeytykset ja prosessit. Prosessi P on suorituksesssa ja seuraavaksi suoritettava konekäsky on "MUL R0, T(R1)".
    1. Mikä on keskeytys ja miten keskeytykset toteutetaan konekäskyjen suoritussyklin tasolla?
    2. Mikä keskeytys voi aiheuttaa prosessin P siirtämiseen "poistettu tai tapettu" (exit, killed) tilaan tämän konekäskyn suorituksen jälkeen? Kuka aiheutti tämän keskeytyksen ja mitä tapahtuu järjestelmässä seuraavaksi?
    3. Mikä keskeytys voi aiheuttaa prosessin P siirtämiseen "valmis suoritukseen" (ready, ready-to-run) tilaan tämän konekäskyn suorituksen jälkeen? Kuka aiheutti tämän keskeytyksen ja mitä tapahtuu järjestelmässä seuraavaksi?
       
  4. [9 p] Taulukot ja aliohjelmat. TW[3,5] on 2-ulotteinen kokonaislukuarvoinen pääohjelmatasolla määritelty taulukko, jossa on siis 3 riviä (rivit 0-2) ja 5 saraketta (sarakkeet 0-4). Kokonaislukuarvoiset muuttujat i ja j on myös määritelty pääohjelmatasolla. TW on talletettu normaaliin tapaan riveittäin.

    Oletetaan myös, että meillä on valmiiksi määritelty ja toteutettu aliohjelma MinMax(T, n, m, min, max), joka palauttaa parametrina annetun 2-ulotteisen taulukon T[n, m] minimi- ja maksimiarvot ulostuloparametreissa min ja max. Parametritaulukossa T on siis n riviä ja m saraketta. Parametrit n ja m ovat arvoparametreja ja kaikki muut parametrit ovat viiteparametreja. Aliohjelmaa MinMax ei siis tarvitse toteuttaa.

    1. Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla tulostetaan taulukon TW alkion TW[i, j] arvo.
    2. Aliohjelman MinMax käyttämän taulukon osoite välitetään viiteparametrin T avulla. Oletetaan tässä, että parametrina annetun taulukon osoite on aliohjelmassa MinMax ladattu rekisteriin R3.
      Anna ttk-91 koneen symbolisella konekielellä aliohjelman MinMax käskyt, joilla tulostetaan taulukon T alkion T[i, j] arvo. (Muuttujat i ja j on määritelty pääohjelmatasolla.)
    3. Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla aliohjelmaa MinMax käyttäen etsitään ja tulostetaan taulukon TW pienimmän ja suurimman alkion arvot.

    Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.


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