Tietokoneen toiminta, kevät 2005

Suurin osa tehtävistä edellytetään etukäteen tehdyiksi. Tehdyt tehtävät merkitään listaan ja harjoituspisteitä saa sitä enemmän mitä enemmän tehtäviä on tehnyt. Tehtävät käydään läpi harjoitustilaisuudessa.
Osa tehtävistä tehdään ryhmätöinä vasta harjoitustilaisuudessa. Myös ryhmätöinä tehtäviiin on syytä perehtyä etukäteen, jotta harjoituksiin varattu aika riittäisi ja jotta itselle olisi harjoituksista mahdollisimman suuri hyöty. Ryhmätöissä osallistuminen kasvattaa harjoituspistetiliä.

Harjoitus 1

Käsitellään harjoitusryhmissä maanantaina 23.5.2005.
  1. Yleistä tietokoneista
    1. Mitkä osat ovat välttämättömiä tietokonelaitteistossa? Entä mitkä ovat tietokoneiden yleisimpiä oheislaitteita?
    2. Etsi mainoksista tai verkosta vähintään kahden erilaisen tietokoneen (PC:n eli 'kotitietokoneen', kannettavan, kämmenmikron, supertietokoneen, yms) kapasiteetti- ja suorituskykyarvoja.

  2. Mitä tarkoitetaan seuraavilla käsitteillä?
    1. mikroprosessori - mikrotietokone - keskusyksikkö - kontrolliyksikkö
    2. ohjelma - prosessi
    3. lausekieli - symbolinen konekieli -konekieli -mikrokoodi
    4. käännös - tulkinta
    5. tavalliset käskyt - etuoikeutetut käskyt

  3. Korkean tason kieli vs. symbolinen konekieli.
    Oletetaan, että meillä on korkean tason kielellä (C, Java, Pascal) tehty ohjelma Simple, joka on käännetty TTK-91 koneen konekielelle.
    1. Missä fyysisesti erilaisissa tietokoneen komponenteissa ohjelman Simple muuttujan X arvo voi sijaita (TTK-91 koneessa) ohjelman suoritettaessa? Anna kaksi vaihtoehtoa. Perustele vastauksesi.
    2. Anna seuraaviin kysymyksiin vastaukset TTK-91 koneen osalta erikseen kullekin em. kahdelle vaihtoehdolle.
      1. Millä konekäskyillä X:n arvon voi tulostaa?
      2. Millä konekäskyillä X:n osoitteen voi tulostaa?
      3. Millä konekäskyillä X:n arvoksi asetetaan luku 65?
      4. Millä konekäskyillä X:n osoitteeksi asetetaan luku 211?
      5. Millä konekäskyillä X:n arvo voidaan tallettaa muistiin muuttujan Y arvoksi?

    3. Kääntäminen, linkitys, ym.
      1. Käännä ohjelma rand.c linuxissa komennolla gcc -c rand.c
      2. Linkitä ohjelma komennolla gcc rand.o -o rand
      3. Minkä kokoinen on objektitiedosto rand.o entä suoritettava ohjelmatiedosto rand?
      4. Symbolisen konekielisen version saat komennolla gcc -S rand.c. Kuinka monta hyppykäskyä löysit tiedostosta rand.s?
      5. Suorita vielä ohjelma rand antamalla syötteeksi luvut 17 ja 1.
      6. Simulaattori
        1. Miten simulaattori eroaa todellisesta tietokoneesta?
        2. Miten simulaattorilla suoritettavat ohjelmat eroavat todellisella tietokoneella suoritettavista ohjelmista?
        3. Mitä etua on suorittaa ohjelmia simulaattorilla sen sijaan, että ne suoritettaisiin todellisella tietokoneella?
        4. Mitä haittaa on suorittaa ohjelmia simulaattorilla sen sijaan, että ne suoritettaisiin todellisella tietokoneella?

    4. Korkean tason kielessä ja konekielessä on erilaisia ohjelmaelementtejä. Alla on lueteltu joukko TTK-91 koneen konekäskyjä ja pseudokonekäskyjä. (Pseudokonekäskyjä kutsutaan myös kääntäjän ohjauskäskyiksi). Minkälaisesta korkean tason kielen ohjelmakohdasta (ohjelmointikielen lause tai sen joku osa) kääntäjä voisi käyttää TTK-91 koneen (pseudo)konekäskyä
           1) SUB           2) MOD           3) OR           4) XOR
           5) COMP          6) JUMP          7) JNGRE        8) DC
      
      Anna korkean tason kielellä (C, Java, tms) esimerkki kustakin tapauksesta ja kerro millaiseksi TTK-91 kielen käskyksi se voitaisiin kuvata.
      Miten kääntäjän ohjauskäskyt eroavat tavallisista konekäskyistä?

    5. Esitä allaolevat käskyt TTK-91 käskyrakenteen mukaan kokonaislukuina (ei siis tarvitse muuttaa biteiksi):
         MUL R1, R5
         LOAD R3, Puppu
         ADD R5, Puppu(FP)
         STORE R1, Puppu
         JUMP @Puppu(R1)
         SUB R3, @Link(FP)
      
      Olkoon symbolin Puppu arvo 127 ja symbolin Link arvo 4. Käskyrakenne löytyy Häkkisen monisteesta tai luentokalvoista. Operaatioiden koodit on esitetty TTK-91-koneen käskyluettelossa. .

    6. Seuraavissa symbolisen konekielen käskyissä on virheitä. Etsi virheet ja korjaa käskyt oikeaan muotoon.
      6puu   LOAD R1, apu
      pois   ADD  apu, =R1
             SUB  R8, @R1
             STORE R1, R2(R3)
      Taas5  CMPA R1, sata
             JLES Loppu
             MUL R1, =sata
             JPOS pois
             NOP R1, 0
             JMP Taas
      Loppu  SVC =HALT, SP