581305-6 Tietokoneen toiminta, 5 op, koe 2.2.2016  

Kirjoita jokaiseen vastauspaperiisi: oma nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi.
Kuhunkin tehtävään riittää noin 1-2 sivun vastaus.
Tehtävä 4 toimii pyydettäessä myös syksyn 2015 luentokurssin minikokeen 4 uusintakuulusteluna.
Tämä koe toimii pyydettäessä myös syksyn 2015 luentokurssin kurssikokeen uusintakuulusteluna.
  1. [9 p] Tiedon esitysmuodot
    1. [2 p] Anna kokonaisluvun -11 esitysmuoto 16-bittisessä kahden komplementin (twos complement) Big-Endian esitysmuodossa.
    2. [1 p] Anna kokonaisluvun -11 esitysmuoto 16-bittisessä yhden komplementin (ones complement) Big-Endian esitysmuodossa.
    3. [3 p] Anna liukuluvun +5.0 esitysmuoto 32-bittisessä IEEE liukulukustandardin Big-Endian esitysmuodossa.
    4. [1 p] Anna liukuluvun +5.0 esitysmuoto 32-bittisessä IEEE liukulukustandardin Little-Endian esitysmuodossa.
    5. [2 p] Oletetaan, että muistipaikassa 30088 on talletettuna 32-bittinen liukuluku +6.789. Voisiko muistipaikkaa 30088 käsitellä kokonaislukuna ja lisätä sen arvoon luku 4? Miksi ei ja/tai mitä siitä seuraisi?

  2. [9 p] Konekäskyjen suoritus.
    1. [3 p] Määrittele käsite "käskyjen nouto- ja suoritussykli" (fetch-execute cycle).
      Mitkä ovat sen vaiheet ja mitä vaiheissa tapahtuu? Miten rekisteri PC liittyy tähän?
      Anna konkreettinen konekäskytason esimerkki käyttäen konekäskyä "ADD R5, SALARY(R1)".
    2. [3 p] Mikä on etuoikeutettu käskyjen suoritustila, mihin sitä tarvitaan ja kuinka se on käytännössä toteutettu käskyjen suoritussyklissä? Mitä etuoikeuksia siihen liittyy? Miten siihen päästään ja kuinka siitä palataan normaaliin käskyjen suoritustilaan? Miten tilarekisteri SR liittyy tähän?
    3. [3 p] Mitä ovat keskeytykset (interrrupts), mihin niitä tarvitaan ja kuinka ne on käytännössä toteutettu käskyjen suoritussyklissä? Miten tilarekisteri SR liittyy tähän? Anna konkreettinen konekäskytason esimerkki (mitä täsmälleen tapahtuu keskeytyksen seurauksena) käyttäen jotain konekäskyn "ADD R5, SALARY(R1)" suoritusaikana mahdollisesti tapahtuvaa keskeytystä. Mainitse käyttämäsi keskeytystyyppi.
        
  3. [9 p] Titokone, TitoTrainer ja ttk-91. Funktio F(a, b, c) palauttaa arvonaan lausekkeen a+5b-c arvon. Esimerkiksi lausekkeen x = F(1,2,3) suorituksen jälkeen muuttujan x arvo on 8. Parametrit a ja b ovat arvoparametreja ja parametri c on viiteparametri. Muuttujat x ja y on määritelty pääohjelmatasolla.
    1. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota F kutsumalla) lauseke
      x = F(x, y, y)
    2. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota F kutsumalla) lauseke
      x = F(x+7654321, x-y, x-y).
    3. [3 p] Toteuta ttk-91 symbolisella konekielellä funktio F.
      Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.

  4. [9 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. [3 p] Anna kaksi luonteeltaan hyvin erilaista tapaa Java-ohjelman suorittamiseen. Selitä, kuinka Java-ohjelmia suoritetaan niissä. Anna kumpaankin suoritustapaan käytännön esimerkki, jossa juuri se suoritustapa olisi parempi kuin mainitsemasi toinen vaihtoehto. Perustele esimerkkisi. 

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