581305-6 Tietokoneen toiminta, 4 op, koe 12.11.2013   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi. Kuhunkin tehtävään riittää noin 1-2 sivun vastaus.

  1. [9 p] Tiedon esitys.
    1. [4 p] Anna kokonaisluvulle -5 kolme erilaista 32-bittistä tiedon talletusmuotoa muistissa. Nimeä talletusmuodot ja näytä kuinka luku -5 esitetään niiden avulla.
    2. [3 p] Miten liukuluvut esitetään muistissa? Mikä on liukulukujen normeerattu 32-bittinen esitysmuoto ja miksi sitä käytetään? Miten liukuluku 1.5 esitetään muistissa?
    3. [2 p] Mitä tarkoittavat käsitteet Little Endian ja Big Endian tiedon talletuksen yhteydessä? Anna kuvaava esimerkki käyttäen 32-bittistä kokonaislukua 258.
       
  2. [9 p] Konekäskyjen suoritus.
    1. Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet ja mitä vaiheissa tapahtuu? Anna konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "jnzer r1, loop".
    2. Oletetaan, että käskyn suoritusaikana tapahtuu jotain, minkä vuoksi käyttöjärjestelmän pitäisi saada suoritusvuoro. Anna käytännön esimerkki tällaisesta tapahtumasta. Kuinka tämä havaitaan? Kuinka käyttöjärjestelmä saa kontrollin ja käsittelee kyseisen tapahtuman? Mitä sitten tapahtuu? Anna konkreettinen esimerkki tilanteessa, jossa suoritusvuorossa on konekäsky "add r1, palkka(r2)".
    3. Mikä on etuoikeutettu käskyjen suoritustila, mihin sitä tarvitaan?
      Miten se eroaa tavallisesta käskyjen suoritustilasta?
      Miten siihen päästään ja kuinka siitä palataan normaaliin käskyjen suoritustilaan?
       
  3. [9 p] Java
    1. [3 p] Mikä on Java virtuaalikone (Java virtual machine, JVM)?
    2. [2 p] Vertaile JVM:ää ttk91.een. Mitä niillä on yhteistä? Miten ne eroavat toisistaan?
    3. [4 p] Anna kolme erilaista tapaa Java-ohjelman suorittamiseen. Mitkä ovat niiden suurimmat eroavaisuudet toisistaan? Anna kuhunkin käytännön tilanne, milloin juuri se suoritustapa olisi parempi kuin ne kaksi muuta.
       
  4. [9 p] Titokone, TitoTrainer ja ttk-91. Kokonaislukuarvoinen funktio ffunny(x, y, z) palauttaa arvonaan lausekkeen y+z/x arvon. Parametrit x ja y ovat arvoparametreja ja z on viiteparametri. Kokonaislukuarvoiset muuttujat a, b ja c on määritelty pääohjelmatasolla.
    1. Toteuta (ttk-91 symbolisella konekielellä) funktiota  ffunny() kutsuva lauseke a=ffunny(123, b, c).
    2. Toteuta funktiota  ffunny() kutsuva lauseke a=ffunny(a+1, 5554444, a+1).
    3. Toteuta kokonaislukuarvoinen funktio ffunny(x, y, z),

      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