Tietokoneen toiminta, kevät 2002

Harjoitus 3

Käsitellään harjoitusryhmissä keskiviikkona 29.5.2002.

  1. Kurssilla on sata oppilasta. Peräkkäisiiin muistipaikkoihin 100, ..., 199 on talletettu kunkin oppilaan pistemäärät. Kirjoita symbolisella konekielellä ohjelma, joka tulostaa oppilaiden pistemäärien keskiarvon.
  2. Aliohjelma ja pääohjelma
    1. Laadi aliohjelma Summa, joka laskee taulukkoon eli peräkkäisiin muistipaikkoihin talletettujen lukujen summan. Aliohjelmalle välitetään aktivointitietuessa eli pinossa parametreina taulukon osoite sekä taulukon koko. Myös laskettu summa palautetaan pinossa.
    2. Laadi pääohjelma Pisteet, joka kutsuu aliohjelmaa Summa laskemaan taulukkoon Taulu [0:50] talletettujen koepisteiden summan ja tulostaa pistemäärien keskiarvon. Voit olettaa, että pisteet on jo valmiiksi talletettu taulukkoon.
    3. Näytä pinon sisältö juuri ennen aliohjelmakutsua, aliohjelman aloittaessa, juuri ennen aliohjelmasta paluuta, heti paluun jälkeen ja juuri ennen pääohjelman lopetuskäskyä.

  3. Laadi TTK-91:n symbolisella konekielellä pääohjelma ja aliohjelma Vaihda, joka vaihtaa parametriensa X ja Y arvon:
                       APU = X; 
                       X =  Y; 
                       Y =  APU;
    Välitä parametrit aktivointitietueessa. Piirrä myös kuva aktivointitietuepinosta.

  4. Rekursiivinen aliohjelma
    1. Käännä seuraava rekursiivinen aliohjelma konekielelle:
          
               static long Duo(int n) {
                   if n < 1 then return 1 else
                   return Duo(n-1)+n+1;
                }
      
    2. Kirjoita myös yksinkertainen pääohjelma, jossa kutsutaan metodia Duo arvolla n = 3.
    3. Näytä, miten aktivointitietuepino muuttuu aliohjelman suorituksen aikana.

  5. Kuvaa prosessorin rekistereiden tasolla, miten käskynouto tehdään. Miksi ohjausyksikkö kasvattaa jokaisen käskynoudon yhteydessä käskyosoitinta? Mitä tapahtuisi, jos tätä ei tehtäisi? Voitaisiinko käskyosoittimen kasvatus tehdä vasta käskyn suorituksen jälkeen?

  6. Esitä prosessorin rekisterien tasolla, miten suoritetaan seuraavat käskyt:
    1. MUL R2,@5
    2. STORE R2,@R5
    3. SUB R5,5(R5)
    4. JPOS R5, 100
    5. SVC SP,=11 ;palvelupyyntö HALT 1
    6. Mitä eri keskeytyksiä tai poikkeustilanteita tehtävän käskyjen suorituksen aikana voi tapahtua? Miten keskeytykset havaitaan? Miten niihin reagoidaan? Missä tapauksessa keskeytyksen jälkeen on mahdollista jatkaa saman ohjelman suorittamista?