Tietokoneen toiminta, 2 ov
Helsingin yliopisto, Avoin yliopisto, uusintakuulustelu 22.10.2001

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, opiskelijanumero (tai henkilötunnus),
kurssin nimi, nimikirjoitus ja sivunumero.

Tämä koe vain kesän 2001 luentokurssille aktiivisesti (vähintään 9/30 harjoitustehtäväpistettä) osallistuneille. Kokeen tulokset ovat valmiita 16.11.2001 mennessä. Tulokset näkyvät myös verkossa tietojenkäsittelytieteenlaitoksen intranetissä (ks. http://www.cs.helsinki.fi/u/kerola/tito/) heti arvostelun valmistuttua.

  1. [15 p]  Aliohjelmat, parametrit, makrot, literaalit, muuttujat, vakiot
    1. [5 p] Anna esimerkki tilanteesta, jossa (aliohjelman) parametri P olisi parempi toteuttaa arvoparametrina kuin viiteparametrina. Perustelut?
      Anna esimerkki päinvastaisesta tilanteesta, jossa parametri P olisi parempi toteuttaa viiteparametrina kuin arvoparametrina. Perustelut?
    2. [5 p] Anna esimerkki tilanteesta, jossa rutiini XYZ olisi parempi toteuttaa makrona kuin aliohjelmana. Perustelut?
      Anna esimerkki päinvastaisesta tilanteesta, jossa rutiini XYZ olisi parempi toteuttaa aliohjelmana kuin makrona. Perustelut?
    3. [5 p] Anna esimerkki tilanteesta, jossa on parempi toteuttaa lukuarvo X literaalina kuin vakiona käskyssä. Perustelut?
      Anna esimerkki päinvastaisesta tilanteesta, jossa on parempi toteuttaa lukuarvo X vakiona käskyssä kuin literaalina. Perustelut?

     

  2. [15 p] Suorittimen tilat (processor states)
    1. [3 p] Mitkä ovat suorittimen tilat? Miten suorittimen tila näkyy suorittimella?
    2. [3 p] Milloin suorittimen tila vaihtuu? Käsittele kukin tilasiirtymä erikseen.
    3. [3 p] Miten suorittimen tila vaihtuu? Käsittele kukin tilasiirtymä erikseen.
    4. [3 p] Miten keskeytykset liittyvät suorittimen tilaan?
    5. [3 p] Miten prosessi liittyy suorittimen tilaan? Missä tilassa suoritin on sovellusprosessin suorituksen aikana?

  3. [15 p] Java-ohjelmien suoritus.
    1. [3 p] Minkälaisia eri tapoja on suorittaa Java-ohjelmia? Miten ne eroavat toisistaan?
    2. [3 p] Mainitse kustakin eri suoritustavasta esimerkki, jolloin juuri se suoritustapa olisi paras vaihtoehto. Perustele.
    3. [3 p] Miten Java-ohjelmien kääntäminen eroaa C-ohjelmien kääntämisestä?
    4. [3 p] Miten Java-ohjelmien linkittäminen eroaa C-ohjelmien linkittämisestä?
    5. [3 p] Miten Java-ohjelmien yleisin suoritustapa eroaa C-ohjelmien suorituksesta?

     

  4. [15 p]  Ttk-91 koneen konekieli. Taulukot ja aliohjelmat. Kokonaislukuarvoinen taulukko Big[200] on määritelty pääohjelmatasolla. Taulukossa on siis 200 alkiota (alkiot 0,...,199). Kokonaislukumuuttuja p on myös määritelty pääohjelmatasolla.
    1. [4 p] Anna konekäskyt, joilla tulostetaan alkion Big[78] arvo ja sen osoite.
    2. [4 p] Anna konekäskyt, joilla tulostetaan alkion Big[p] arvo ja sen osoite. Voit (epärealistisesti) olettaa, että muuttujan p arvo on sallituissa rajoissa.
    3. [4 p] Anna konekäskyt, joilla alustetaan taulukko Big siten, että Big[i] =  i - 8787878 kaikille Big:n alkioille.
    4. [3 p] Kokonaislukuarvoinen funktio Elem(T, K, I) palauttaa arvonaan K-ulotteisen kokonaislukuarvoisen taulukon T alkion I arvon. Anna ttk-91 symbolisen konekielen konekäskyt, joilla funktion Elem(T, K, I) avulla tulostetaan alkion Big[p] arvo. Noudata suositusten mukaista aliohjelmien kutsumekanismia. Parametri T on viiteparametri ja parametrit K ja I ovat arvoparametrejä..
 
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