Tietokoneen toiminta, kurssikuulustelu 30.3.2007    (HUOM: koeaika 2h 30min)

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [6 p] Kokonaisluku -25 on muistissa tavuosoittessa 200 ja liukuluku 4.0 tavuosoitteessa 220. Anna sen bittitason esitysmuoto, kun talletusmuotona on
    1. Anna luvun -25 bittitason esitysmuoto (tavuosoitteessa 200), kun talletusmuotona on 32-bittinen (4 tavua) Big Endian 2-komplementti (normaali ttk-91 esitysmuoto). Tee hyvin selväksi kunkin bitin ja tavun sisältö muistissa.
    2. Anna luvun -25 bittitason esitysmuoto (tavuosoitteessa 200), kun talletusmuotona on 32-bittinen (4 tavua) Little Endian 2-komplementti. Tee hyvin selväksi kunkin bitin ja tavun sisältö muistissa.
    3. Miten liukuluvut esitetään IEEE'n standardin mukaisesti? Kerro kunkin kentän pituus, sisältö ja esitysmuoto.
    4. Anna luvun 4.0 bittitason esitysmuoto (tavuosoitteessa 220), kun talletusmuotona on 32-bittinen (4 tavua) Big Endian IEEE'n liukulukustandardi.
    5. Kirjoita algoritmi (ttk-91 symbolisella konekielellä tai jollakin korkean tason algoritmin kuvauskielellä), joka muuttaa rekisterissä R1 olevan 32-bittisen Big Endian 2-komplementin esitysmuodossa olevan kokonaisluvun 32-bittiseen Big Endian etumerkin sisältävään esitysmuotoon. Voit olettaa luvun arvon olevan välillä
      [-1000000, 1000000].
      Huom
      : tee tämä tehtävän osa vasta kokeen lopuksi, jos sinulla on aikaa!

     
  2. [6 p] Prosessi (process).
    1. Piirrä prosessin suoritusaikaisista tiloista (process state) 5-tilainen tilakaavio. Kerro tilojen nimet ja piirrä niiden väliset mahdolliset tilasiirtymät. Kerro myös, mitä tilasiirtymissä tapahtuu.
    2. Oletetaan, että suoritettava oleva ohjelma P on hyvin yksinkertainen ja vain tulostaa tekstin "Hello world" näytölle. Anna niiden (kohdan a) prosessin tilojen sarja, joissa ohjelman P suoritusaikainen prosessi ohjelman suoritusaikana käy. Mitä järjestelmässä tapahtuu kunkin tilan ja kunkin tilasiirtymän aikana?

    1.  
  3. [6 p] Java
    1. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu tulkitsemalla?
    2. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu kääntämällä? Miten tämä suoritus eroaa edellämainitusta tavasta (a)?
    3. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu Java-suorittimessa? Miten tämä suoritus eroaa edellämainituista tavoista (a ja b)?
    4. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu JIT:llä? Miten tämä suoritus eroaa edellämainituista tavoista (a, b ja c)?

       
  4. [6 p] Titokone, TitoTrainer ja ttk-91. Toteuta ttk-91 symbolisella konekielellä
    1. Kokonaislukuarvoinen funktio funx(x, y), joka palauttaa lausekkeen p*x+q*y arvon paluuarvonaan, kun p ja q ovat kyseisen funktion paikallisia muuttujia. Paikallisen muuttujan p alkuarvo on 5 ja paikallisen muuttujan q alkuarvo on 7. Parametrit (x ja y) ovat arvoparametreja.
    2. Lausekkeen 2+funx(a, 8) arvon laskeva ja tulostava koodi. Funktio funx() on määritelty edellä ja lausekkeen (a*5+8*7) arvo tulee laskea tätä funktiota kutsumalla. Muuttuja a on määritelty pääohjelmatasolla.

    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