581305-6 Tietokoneen toiminta, 5 op, kurssikuulustelu 18.12.2014   (2.5 h)

Anna kunkin tehtävän vastaus omalle arkilleen ja palauta arkit tehtäväkohtaisiin pinoihin.

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

  1. [10] Tiedon esitysmuodot
    1. [4 p] Anna kokonaisluvun -12 esitysmuoto 16-bittisessä kahden komplementin (twos complement) Little-Endian esitysmuodossa.
    2. [3 p] Kuinka liukuluvut esitetään 32-bittisessä IEEE liukulukustandardissa? Mikä on piilobitti?
    3. [3 p] Anna liukuluvun -12.0 esitysmuoto 32-bittisessä IEEE liukulukustandardin Big-Endian esitysmuodossa.

  2. [10 p] Keskeytykset (interrupts). Oletetaan, että suorituksessa on konekäsky add r1,r3 ja sen jälkeen konekäsky sub r1,r2. Konekäskyn add r1,r3 suorituksen aikana tapahtuu I/O-laitekeskeytys.
    1. [4 p] Mikä on keskeytys? Mihin niitä tarvitaan? Miten etuoikeutettu suoritustila liittyy keskeytyksiin ja miksi?
    2. [3 p] Miten laitteisto käsittelee keskeytykset? Anna täsmällinen käskyjen nouto- ja suoritussyklitason esimerkki tästä I/O-laitekeskeytyksestä. Miten ja milloin keskeytyneen ohjelman suoritus voi jatkua konekäskystä sub r1,r2 ?
    3. [3 p] Miten käyttöjärjestelmä käsittelee keskeytykset? Anna täsmällinen esimerkki tähän I/O-laitekeskeytykseen liittyen. Miten ja milloin kontrolli palaa keskeytyneesen ohjelmaan?
     
  3. [10 p] Java
    1. [3 p] Mikä on Java tavukoodi (byte code)? Miksi se on olemassa? Mistä se generoidaan ja milloin?
    2. [3 p] Javan tavukoodia suoritetaan Java virtuaalikoneessa (JVM). Mikä on JVM:n perusrakenne?
    3. [4 p] Tulkitseminen ja JIT-kääntäminen ovat kaksi erilaista tapaa suorittaa Java-ohjelmia. Selitä, kuinka Java-ohjelmia suoritetaan niissä. Mitkä ovat niiden suurimmat eroavaisuudet toisistaan? Anna kumpaankin suoritustapaan käytännön esimerkki, jossa juuri se suoritustapa olisi parempi kuin mainitsemasi toinen vaihtoehto. Perustele esimerkkisi.
     
  4. [10 p] Titokone, TitoTrainer ja ttk-91. Funktio Sum(T, n) palauttaa arvonaan parametrina annetun 1-ulotteisen ja n-alkioisen taulukon T alkioiden arvojen summan. Parametri T on viiteparametri ja parametri n on arvoparametri.
    Riveittäin talletetussa 2-ulotteisessa taulukossa Arr[10,6] on 10 riviä ja 6 saraketta.
    Muuttujat x, i ja j on määritelty pääohjelmatasolla.
    1. [4 p] Toteuta ttk-91 symbolisella konekielellä lause
                     Arr[i,j] = x.
      Voit olettaa, että i:n ja j:n arvot ovat sallituilla väleillä.
    2. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota Sum kutsumalla) lause
                     x = Sum(Arr, 60).
    3. [3 p] Toteuta ttk-91 symbolisella konekielellä funktio Sum(T,n).
      Voit olettaa, että n:n arvo on positiivinen.

      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