Harjoitusten vastaukset

Tietokoneen toiminta, Itseopiskelukurssi, HT 2 vast
HUOM: Katso nämä vastaukset vasta tehtyäsi itse tehtävät. Oppiminen tapahtuu pääasiassa tehtäviä ratkottaessa. Vastauksen katsominen heti kättelyssä on hyvän tehtävän hukkaanheittämistä oppimisen näkökulmasta.

  1. Tiedon sijainti laitteistossa

    Missä kaikkialla laitteistossa (esim. muisti, välimuisti, levymuisti, CD-asema, DVD-asema, Flash-kovalevy, rekisterit) konekäskyssä suoritusaikana viitattava data voi sijaita?     i) laiterekisteri, ii) käskyrekisteri iii) välimuisti, iv) muisti
    Minkälaisilla konekäskyillä eri paikoissa sijaitsevaan dataan viitataan?    
    i) add r2,r3 (data r3:ssa)     ii) add r2, =5 (pieni vakio käskyssä)    iii) add r2, x (X:n arvo voi olla välimuistissa)
    iv) add r2, x (X:n arvo voidaan joutua hakemaan keskusmuistista)

    Miten tiedon tyyppi (esim. kokonaisluku, totuusarvo, taulukko, tietue, tiedosto) vaikuttaa tähän asiaan?
    Rekisteressä voi pitää vain suorittimen ymmärtämiä yksinkertaisia tietotyyppejä (suoritinkohtainen)
    Onko joku tiedon sijaintipaikka parempi kuin muut?     Nopeampi on parempi
    Milloin ja miksi?    Muistissa oleva tieto ei varaa rekisteriä, käskyyn mahtuu vain pieniä kokonaislukuja,
    käskyssä olevaa vakiota ei voi muuttaa suoritusaikana

    Missä kaikkialla laitteistossa voi tietty kokonaisluku sijaita?     Missä vain (iso ei käskyn vakiona)
    Entä taulukko?     Vain muistissa (ja osia välimuistissa)
    Minkälainen tieto ei voi olla rekisterissä?     Monisanainen

  2. Muistin osoitusmuodot. Oletetaan, että kullakin käskyllä jatkossa lähtötilanne on oheisen kuvan [Tito luento 2, Kesä 2004] tilanne. Anna kullekin käskylle tehollinen muistiosoite (effective address) ja joko muuttuneen rekisterin sisältö tai muuttuneen muistipaikan osoite ja sisältö. Jos jokin käsky ei ole laillinen, kerro minkä takia näin on.
    1. LOAD R4, 200               ea=200, r4:n uusi arvo 6000
    2. LOAD R3, One(R1)     ea=11, r3:n uusi arvo 300
    3. LOAD R3, =One(R1)     ea=11, r3:n uusi arvo 11
    4. STORE R0, One(R1)    ea=11, mem(11):n uusi arvo 104
    5. STORE R2, @9(R3)    ea=10, mem(200):n uusi arvo 201
    6. LOAD R0, @R1         ea=10, r0:n uusi arvo 200
    7. LOAD R1, @(R1)       ea=10, r1:n uusi arvo 6000
    8. STORE R1, @(R1)     ea=10, mem(200):n uusi arvo 10
    9. STORE R0, R1            Laiton käsky, store aina tallettaa muistiin
    10. LOAD R1, =X(R0)     ea=10, r1:n uusi arvo 10 (r0 tarkoittaa tässä, että indeksirekisteriä ei käytetä)
    11. STORE R2, =One       Laiton käsky, symbolin arvoa ei voi muuttaa
       
  3. Taulukot ja tietueet
    1. Miten 1-ulotteiset taulukot on toteutettu konekielen tasolla? Miten taulukon alkioihin viitataan?
      Määrittely ja tilanvaraus DS-käskyllä, osoitus muodossa Taulu(R2), jossa Taulu on alkuosoite ja R2 sisältää viitatun alkion indeksin
    2. Jos 1-ulotteisen taulukon osoite on rekisterissä R3 ja indeksi rekisterissä R1, millä konekäskyillä saat kyseisen alkion arvon rekisteriin R4? add r3, r1 (tuhoaa alkuosoitteen)    load r4, 0(r3)
    3. Miten 2-ulotteiset taulukot on toteutettu konekielen tasolla? Miten taulukon alkioihin viitataan?
      Määrittely ja tilanvaraus DS-käskyllä: Taulu DS 50, tallennus riveittäin tai sarakettain, osoitus kahdessa osassa i) laske alkion osoite talletetussa taulukossa indeksirekisteriin R3, ii) viittaa alkioon normaalisti yhden indeksirekisterin avulla LOAD R1, Taulu(R3)
    4. Mitä tarkoittaa käsite sarakettain talletettu 2-ulotteinen taulukko?
      Alkiot on talletettu muistiin sarakejärjestyksessä, esim ensin T(0,0), sitten T(1,0), sitten T(2,0), jne
    5. Miten tietueet on toteutettu konekielen tasolla? Miten tietueen kenttiin viitataan?
      Monisanainen tietorakenne, alkuosoite tunnettu, esim. Rec DC 20. Viittaus siten, että tietueen alkuosoite rekisteriin (esim R3) ja kentillä on kullakin etukäteen tunnettu suhteellinen osoite tietueen sisällä (esim Salary EQU 3), viittaus esim LOAD R1, Salary(R3).
    6. Miten oliot on toteutettu konekielen tasolla? Miten metodit on toteutettu?
      Olio on tietue, metodia edustaa tietueen kenttä, jonka tyyppinä on muistisoite (metodin kutsukohta). Metodin kutsu vaikkapa tyyliin CALL SP, @MethodX(R3).
       
  4. Tämän viikon TitoTrainer tehtävät

Ylimääräisiä keskustelutehtäviä

  1. Miten voisi viitata tietoon, jos mikään laitteiston tiedonosoitusmuoto ei tue sitä? Esimerkiksi 2-ulotteinen taulukko? Entä tieto, johon viittaava linkki on 5. linkki linkkitaulukossa Links, johon osoittaa osoitinmuuttuja pLinks? Mitä haittaa on kovin useasta tiedonosoitusmoodista?

  2. Yksiulotteiseen globaaliin taulukkoon on helppo viitata indeksoidun tiedonosoitusmoodin avulla. Miten tilan varaus ja viittaus tapahtuu jos kyseinen (10-alkioinen) taulukko on aliohjelman paikallinen tietorakenne?

  3. Mikä on olioiden ja tietueiden ero? Onko sitä? Entä Java olioiden ja Simula olioiden ero?

  4. Mitä hyötyä/haittaa on laajemmasta käskykannasta (useita erilaisia konekäskyjä erilaisille tietotyypeille?

  5. Anna kertauskysymystehtävän vastausvaihtoehtoja hyvine selityksineen seuraavaan kertauskysymykseen: "Mitkä seuraavista väitteistä liittyen tiedon suoritusaikaiseen talletukseen järjestelmässä ovat totta?"
    1. Anna ainakin kolme vastausvaihtoehtoa, jotka ovat totta.
    2. Anna ainakin kolme vastausvaihtoehtoa, jotka eivät ole totta.
    3. Anna ainakin kaksi vastausvaihtoehtoa, jotka voivat ehkä olla totta tai sitten ei.
    Palauta vastausvaihtoehdot selityksineen ohjaajalle. Tee vastausvaihtoehdot ja selitykset sellaisiksi, jotta niiden käyttö olisi hyödyllistä muille kurssin opiskelijoille. Vastausta saatetaan käyttää uuden kertaustehtävän laadinnassa. Jos vastausta ei saa käyttää tähän tarkoitukseen, mainitkaa asiasta palautuksessa.