581305-6 Tietokoneen toiminta, 2 ov, erilliskoe 30.1.2004

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi, henkilötunnus, kokeen/kurssin nimi, nimikirjoitus ja sivunumero.
  1. [15 p] Konekäskyjen suoritus
    1. [5 p] Mitä suorittimella tapahtuu muistipaikassa 46 olevaa konekäskyä "ADD  R2, R3" suoritettaessa? Voit olettaa, että yhteenlasku voidaan suorittaa ilman virheitä.
    2. [3 p] Mitä laitteistossa tapahtuu, jos edellisen kohdan käskyä suoritettaessa yhteenlaskun tulos on niin suuri, että se ei mahdu tulosrekisteriin?
    3. [4 p] Anna 4 muuta esimerkkiä erilaisista keskeytyksistä (exception, interrupt), kuin edellisen kohdan aritmetiikan ylivuoto/alivuoto -keskeytys
    4. [3 p] Mitä tarkoittaa "etuoikeutettu tila" (supervisor state, priviledged state) ja miten se vaikuttaa käskyjen suoritukseen? Miten sinne päästään ja miten sieltä päästään pois?
       
       
  2. [15 p] Tiedon esitysmuodot
    1. [2 p] Anna desimaaliluvut +26 ja -26 16-bittisessä 2-komplementin heksadesimaaliesitysmuodossa
    2. [2 p] Anna desimaaliluvut +26 ja -26 16-bittisessä etumerkkibitin sisältävässä heksadesimaaliesitysmuodossa
    3. [2 p] Anna desimaaliluvut +26 ja -26 16-bittisessä 127-vakiolisäyksen heksadesimaaliesitysmuodossa
    4. [3 p] Mitä desimaalilukua 32-bittinen IEEE:n standardin mukainen bittiesitys 0xC1600000 tarkoittaa?
      (0x-etuliite tarkoittaa siis, että kyseessä on heksadesimaaliesitys)
    5. [3 p] Anna konkreettinen liukulukuesimerkki tilanteesta jossa X+Y = X, kun Y > 0. Perustele.
    6. [3 p] Oletetaan, että muistipaikkaan 0x124 (tavuosoite) on talletettu 0x12345 nelitavuisena kokonaislukuna. Anna muistipaikan 0x124 sisältö (i) Little Endian ja (ii) Big Endian talletusmuodossa. Selitä myös sanallisesti ero Big Endian ja Little Endian talletusmuotojen välillä.
       
       
  3. [15 p] Java-ohjelmia (tavukoodia) voidaan suorittaa ainakin kolmella hyvin erilaisella tavalla. Kerro kustakin tavasta,
    1. miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu sitä käyttäen?
    2. mikä käyttöjärjestelmän tuntema prosessi on suoritusvuorossa k.o. Java-ohjelmaa suoritettaessa?
    3. esimerkki tilanteesta, jolloin kyseinen tapa olisi parempi kuin muut vaihtoehdot. Perustele.
    4. esimerkki tilanteesta, jolloin kyseinen tapa olisi huonompi kuin muut vaihtoehdot. Perustele.
    5. sopisiko tämä tapa muita paremmin Java-ohjelmoinnin harjoitustyön suorittamiseen? Perustele?

     
     
  4. [15 p]  Aliohjelmat ja funktiot. Funktio Laske(X, Y, Z) on kokonaislukuarvoinen funktio, joka palauttaa lausekkeen
    f(X,Y,Z)=87*(X-6*Y)/Z+7654321 arvon. Kaikki parametrit ovat kokonaislukuarvoisia. Parametrit X ja Y ovat arvoparametreja, mutta parametri Z on viiteparametri. Globaalit muuttujat A, B ja C on määritelty ja alustettu pääohjelmatasolla.
    1. [4 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( A, 33, B).
    2. [2 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( -54321, 12345678, 12345).
    3. [2 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( C, C, C).
    4. [5 p] Toteuta ttk-91 koneen symbolisella konekielellä funktio Laske().
    5. [2 p] Oletetaan nyt, että funktion Laske asemesta meillä on aliohjelma LaskeT( X, Y, Z, T), joka palauttaa ulostuloparametrissaan T lausekkeen f(X,Y,Z)=87*(X-6*Y)/Z+7654321 arvon. Kaikki parametrit ovat kokonaislukuarvoisia. Parametrit X ja Y ovat arvoparametreja, mutta parametrit Z ja T ovat viiteparametreja.
      Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla aliohjelman LaskeT() avulla lasketaan muuttujalle C uusi arvo C = f( A, 33, B).

    Funktiota Laske() tai aliohjelmaa LaskeT() siis ei tarvitse esittää kohdissa a, b, c ja e.
    Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.


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