Tietokoneen toiminta, kevät 2002

Harjoitus 6

Käsitellään harjoitusryhmissä 11.6.2002.

 

  1. Ohjelmassa käytetyn nimen sidonta sen lopulliseen arvoon voi tapahtua ainakin seuraavien tapahtumien yhteydessä : ohjelman kirjoitusaikana, käännösaikana, linkityksen aikana, latausaikana, kantarekisterin (tai muun KJ rekisterin) asetuksen aikana, tai konekäskyn suoritusaikana. Milloin seuraavien esimerkkien nimien sidonta tapahtuu? Perustele.
    1. add  R1, ParX(FP)               % R1?   ParX?    FP?     ADD?  
    2. XX   dc  456789                  % XX?
    3. call   SP, IO.Print                 % Print?
    4. DD   equ  65                        % DD?
    5. locX = 3456789;                  /* locX?  3456789?      locX is local variable in a C program  */

    Kussakin tapauksessa perustele, miksi sidonta ei voisi tapahtua aikaisemmin/myöhemmin.

     

  2. Java ohjelmia (tavukoodia) voidaan suorittaa (ainakin) neljällä eri tavalla: tulkitsemalla, tavallisella käännöksellä, Just-In-time -käännöksellä tai suoraan Java-suorittimella.
    1. Anna esimerkkejä tilanteesta, jolloin tulkitseminen olisi parempi kuin muut vaihtoehdot. Perustele, miksi muut tavat olisivat huonompia.
    2. Anna vastaavat esimerkit ja perustelut tilanteista, jolloin muut e.m. vaihtoehdoista olisivat parhaita vaihtoehtoja.
    3. Mikä olisi paras vaihtoehto (Java) ohjelmoinnin harjoitustyön suorittamiseen? Miksi?
    4. Mitä prosesseja järjestelmässä tarvitaan ohjelman suoritushetkellä, jos Java ohjelmaasi MyProg suoritetaan 1) tulkitsemalla, 2) tavallisella käännöksellä, 3) Just-In-Time -käännöksellä tai 4) suoraan Java-suorittimella?

     

  3. Java virtuaalikone. Tee seuraavat oletukset. X, Y ja Z ovat paikallisia muuttujia numero 3, 4 ja 5. Tbl osoittaa 20 alkioiseen taulukkoon ja se (Tbl) on talletettu paikalliseen muuttujaan numero 6.
    1. Anna konekäskyt, joilla X:n arvoa kasvatetaan 5:llä.
    2. Anna konekäskyt, joilla X:n arvoksi tulee Y+Z
    3. Anna konekäskyt, joilla Y:n arvoksi tulee Tbl[3]

     

  4. Javan suoritus. Missä olosuhteissa Javalla tehdyn ohjelman suoritus olisi nopeampaa/hitaampaa kuin saman ohjelman C:llä tai C++:lla tehty toteutus? Miksi?

     

  5. Palautetta kurssista
    1. Kurssin tavoitteena on tarjota perustiedot tietokoneen toiminnasta 2 ov:n mittaisella kurssilla. Tarjosiko kurssi mielestäsi tähän tavoitteeseen sopivan peruspaketin? Mikä osa kurssin materiaalista tuntui turhalta ja tarpeettomalta? Mitä tärkeitä asioita kurssilta puuttui? Mistä asioista olisit halunnut tietää enemmän?
    2. Saitko kurssin perusteella mielestäsi riittävän selkeän ja kattavan kuvan tietokoneen toiminnasta? Mitkä asiat tuntuivat turhan vaikeilta ja monimutkaisilta? Luettele mielestäsi kolme vaikeinta asiaa. Mitkä asiat taas tuntuivat helpoilta?
    3. Muita kommentteja kurssista.
    4. Vastaa myös seuraaviin kysymyksiin
      1. Montako tuntia olet käyttänyt tähän kurssiin yhteensä tähän asti aikaa?
        Luentojen seuraamiseen? Harjoituksiin? Itseopiskeluun?
      2. Kuinka suureen osaan luennoista osallistuit? (100%, 90%, ...)
      3. Jos osallistuit lähes kaikkiin luentoihin, niin opitko perusasiat luennoilla vai pitikö niitä vielä kovasti opiskella kirjoista?
      4. Käytitkö englanninkielisiä oppikirjoja? Kuinka paljon?