581305-6 Tietokoneen toiminta, 2 ov, kurssikuulustelu 11.5.2001 (Andra sidan på svenska på svenska)

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, opiskelijanumero (tai henkilötunnus),
kokeen tai kurssin nimi, nimikirjoitus ja sivunumero.
  1. [12 p] Tiedon esitys.
    1. [3 p] Anna erikseen Big Endian ja Little Endian 16-bittisten desimaalilukujen +75 ja -23 esitys koneessa, kun kokonaislukujen esitysmuoto on
      1. etumerkkibitti erikseen
      2. kahden komplementti
      3. yhden komplementti
      4. lisättynä 32767:lla (32767=215-1)
    2. [3 p] Oletetaan, että käytössä on yleisin Big Endian tavujärjestys. Mitä liukulukua 32-bittinen IEEE standardin (8 bitin exponentti) mukainen arvo 0x41100000 esittää?
      (Etuliite "0x" tarkoittaa, että perässä tuleva luku on heksadesimaalimuotoinen)
    3. [3 p] Miten merkkijonoja talletetaan koneessa? Anna täsmällinen esimerkki merkkijonon
      "very simple" tallentamisesta muistiosoitteeseen 0x1A00.
    4. [3 p] Ttk-91 koneessa ei ole liukulukuja käyttäviä konekäskyjä. Voiko ttk-91:n avulla suorittaa liukulukulaskentaa? Jos voi, niin miten? Jos ei voi, niin miksi ei?

  2. [12 p] Suoritin ja prosessi (processor and process)
    1. [3 p] Mitkä ovat suorittimen suoritusaikaiset tilat (processor state)?
    2. [3 p] Miten ja milloin suorittimen tila muuttuu? Käsittele kukin mahdollinen tilasiirtymä erikseen.
      Kerro kustakin tilasiirtymästä esimerkkitapahtuma, joka voisi aiheuttaa kyseisen tilasiirtymän.
    3. [3 p] Mitkä ovat prosessin suoritusaikaiset tilat (process state)?
    4. [3 p] Miten ja milloin prosessin tila muuttuu? Käsittele kukin mahdollinen tilasiirtymä erikseen.
      Kerro kustakin tilasiirtymästä esimerkkitapahtuma, joka voisi aiheuttaa kyseisen tilasiirtymän.

  3. [12 p] Java-ohjelmien suoritus tulkitsemalla Pentium-suorittimella varustetussa tietokoneessa.
    Oletetaan, että Java-ohjelmassasi on lauseke A = B+C;
    1. [3 p] Mikä on tuon lausekkeen esitysmuoto tietokoneen muistissa suoritusaikana?
      Missä sijaitsevat muuttujien A, B ja C arvot? Rekisterissä vai muistissa?
    2. [3 p] Miten Pentium-suorittimella varustettu tietokone suorittaa tuon Java-ohjelman lausekkeen?
    3. [3 p] Minkälainen prosessi on suoritusvuorossa tuon Java-ohjelman lausekkeen suoritusaikana?
    4. [3 p] Jos ohjelman suoritus tapahtuisikin JIT-käännöksen avulla, niin miten kohtien a, b ja c vastaukset muuttuisivat? 
    5. Bonus kysymys [1 p]: Miten Java eroaa C#:sta?
  4.  

  5. [12 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoinen taulukko T[20] on määritelty pääohjelmatasolla. Taulukossa on siis 20 alkiota (alkiot 0,...,19). Kokonaislukumuuttuja k on myös määritelty pääohjelmatasolla.
    1. [3 p] Anna konekäskyt, joilla tulostetaan alkion T[k] arvo.
    2. [3 p] Anna konekäskyt, joilla alustetaan taulukko T siten, että T[i] = i2 + 3 kaikille T:n alkioille.
    3. [3 p] Tee aliohjelma Alusta(S, N), joka kutsuttaessa alustaa kokonaislukuarvoisen N-alkioisen taulukon S siten, että S[i] = i2 + 3 kaikille taulukon S alkioille. Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri.
    4. [3 p] Anna ttk-91 symbolisen konekielen konekäskyt, joilla aliohjelmaa Alusta(S, N) käyttäen alustetaan taulukko T siten, että kunkin alkion T[i] arvoksi tulee  i2 + 3. Noudata suositusten mukaista aliohjelmien kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri.

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