Tietokoneen toiminta, Kevät 2011, Harjoitus 3

Nämä tehtävät tehdään etukäteen ja käsitellään harjoituksissa 3. kurssiviikolla 31.1. - 4.2.2011.

Harjoitukset pohjautuvat verkkoluentoihin 4 ja 5.
Jos haluatte mieluummin käyttää Authorware versioita, niin ne saa verkkoluentojen koostesivulta.

Tehtävät:

  1. Muistiviitteet ja keskeytykset
    1. Montako muistiviitettä tarvitaan konekäskyn "STORE R1, @5(R2)" suorittamiseksi? Mitkä ne ovat?
    2. Montako muistiviitettä tarvitaan konekäskyn "ADD R4, R5" suorittamiseksi? Mitkä ne ovat?
    3. Miten keskeytykset on toteutettu suorittimessa? Mitä tapahtuu keskeytyksen käsittelyn jälkeen?
    4. Oletetaan, että tietyssä sovelluksessa tarvitaan sen omaa keskeytyskäsittelijää tietyn tyyppisten keskeytysten yhteydessä. Miten tämän voisi käytännössä toteuttaa konekäskytasolla eli miten valitaan annettu keskeytyskäsittelijä tietyn keskeytyksen yhteydessä tätä sovellusta ajettaessa ?
    5. Anna esimerkki tilanteesta, jossa olisi hyvä estää keskeytysten käsittely. Kuinka tämä käytännössä toteutetaan suorittimen tasolla? Mitä tapahtuu, jos keskeytykset ovat estettynä kauan aikaa?
  2. Käskyjen suorittaminen
    1. Miksi jokaisen käskyn suorituksen alussa kasvatetaan käskyosoittimen (program counter, PC) arvoa? Mitä tapahtuisi, jos tätä ei tehtäisi?
    2. Kuvaa seuraavien käskyjen nouto ja suoritus prosessorin rekisteritasolla (PC, MAR, Rx, ...):
      • STORE R1, A
      • JUMP R5
      • CALL SP, KESKIARVO
      • SVC SP, =HALT
  3. Aliohjelman parametrina on taulukko. Miten tämän parametrin välitys toteutetaan konekielellä, jos parametri on
    1. arvoparametri
    2. viiteparametri
    (Periaatteen yksityiskohtainen selittäminen riittää, koodia ei ole pakko kirjoittaa)
  4. Tee tason B TitoTrainer tehtävät b-120, b-150, b-350 ja b-370.
    (Voit samantien toki tehdä kaikki muutkin b-tason tehtävät.)
    (Aliohjelmatehtävät taso C vasta seuraavalla viikolla)


Tiina.Niklander@cs.helsinki.fi