Harjoitukset
Huom 1: Kaikilla oppilailla tulisi olla TKTL:n tunnus/salasana
laitoksen Linux- ja Windows-järjestelmien käyttämistä varten. Yliopiston
opiskelijat (joilla on jo ATK-osaston UNIX-tunnus) pyytävät TKTL-tunnusta tktl-luvat@cs.helsinki.fi
:stä (ks. ohjeet http://www.cs.helsinki.fi/compfac/ohjeet/Luvat/uusi.html#sivuainelupa).
Jos sinulla ei vielä ole TKTL-tunnusta, niin saat tilapäisen tunnuksen kurssin
ajaksi käyttöösi harjoitusten vetäjältä. Tilapäinen tunnus lakkaa
toimimasta 30.9.2002, ellet ole siihen mennessä hakenut siihen jatkoaikaa Pekka
Niklanderilta (huone B425).
Huom 2: Kaikkien tulisi ilmoittautua kurssikirjanpitoa varten TKTL:n ILMO
järjestelmään. Jos et ole tehnyt sitä vielä, niin tee se
ystävällisesti nyt heti ensimmäiseksi. Kiitos.
Tietokoneen toiminta, Kesä 2002, LH 1
Nämä tehtävät tehdään harjoituksissa 20.8.2002.
Tee tehtävät yksi kerrallaan haluamassasi järjestyksessä. Tarvittaessa
pyydä apua paikalla olevilta ohjaajilta. On suotavaa tehdä tehtäviä
pienessä ryhmässä (2-3 henkilö), mutta kaikkien tulee silti kirjoittaa omat
vastauksensa ja tehdä omat ohjelmansa omalla koneellaan. Tarkoitus on oppia,
eikä tarkastella muiden oppimista :-). Saatuasi valmiiksi jonkun tehtävän
(joukon tehtäviä), voit pyytää ohjaajaa tarkistamaan suorituksesi.
Tavoitteena on, että harjoituksen jälkeen osaat itsenäisesti (esim.
kurssikuulustelussa) kuhunkin tehtävään liittyvät kurssin asiat.
Jatkoa ajatellen on erityisen tärkeätä, että saat tehtyä tehtävän 5
loppuun tänään.
Ennen pois lähtöäsi varmista vielä, että ohjaajat ovat kirjanneet kaikki
tekemäsi tehtävät. Harjoitustehtäviä voi toki tehdä vielä kotonakin,
mutta kurssin läpipääsyyn ja arvosanaan vaikuttavat vain harjoitustilanteessa
kirjatut tehtävät. Kurssin suoritus edellyttää aktiivisuutta myös
harjoitustehtävien suhteen.
- Missä ohjelma voi sijaita suoritusaikana? Onko yksi, usea vai
kaikki vaihtoehdot oikein? Miksi?
- Missä tahansa verkossa?
- Levyllä?
- Keskusmuistissa?
- Välimuistissa?
- Laiterekistereissä?
- Korkean tason kieli vs. symbolinen konekielen käskyt. Minkälaisen
korkean tason kielen ohjelmakohdan toteuttamiseen voitaisiin käyttää
TTK-91 koneen (pseudo)konekäskyä
- SUB
- MOD
- OR
- XOR
- COMP
- JUMP
- JNGRE
- DC
Anna esimerkki kustakin tapauksesta.
Miten pseudokonekäskyt eroavat tavallista konekäskyistä?
- Muistin osoitusmuodot. Oletetaan, että kullakin käskyllä jatkossa
lähtötilanne on luennon 2 kalvon 18
(TTK-91 muistin osoitusmoodit) 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.
- LOAD R4, 200
- LOAD R3, One(R1)
- LOAD R3, =One(R1)
- STORE R0, One(R1)
- STORE R2, @9(R3)
- LOAD R0, @R1
- LOAD R1, @(R1)
- STORE R1, @(R1)
- STORE R0, R1
- STORE R2, =One
- TTK-91 -koneen KOKSI simulaattori
- Miten simulaattori eroaa todellisesta tietokoneesta?
- Miten simulaattorilla suoritettavat ohjelmat eroavat todellisella
tietokoneella suoritettavista ohjelmista?
- Mitä etua on suorittaa ohjelmia simulaattorilla sen sijaan, että ne
suoritettaisiin todellisella tietokoneella?
- Mitä haittaa on suorittaa ohjelmia simulaattorilla sen sijaan, että
ne suoritettaisiin todellisella tietokoneella?
- [2 htp] Opettele käyttämään Koksi simulaattoria. Katso ohjeita kurssin
aikataulusivulta http://www.cs.helsinki.fi/teemu.kerola/tito/ks2002/aikataulu.html
- Kopio koksi.zip sopivaan hakemistoosi (esim hakemisto
"koksi"), pura se samaan hakemistoon.
(Joissakin Windows versioissa hakemistosi tulee sijaita paikallisella
levyllä eikä levypalvelimella.)
- Käytä esim. "Find" apurutiinia paikallistaaksesi jonkun
tekstipohjaisen editorin (esim. "edit.com") ja laita sen
absoluuttinen polkunimi (esim. "c:\dos\edit.com")
alustustiedoston Koksi.cfg ainoaksi riviksi.
- Imuroi Koksi esimerkkiohjelmista http://www.cs.helsinki.fi/teemu.kerola/tito/esimerkit
ohjelma sum.k91 ja talleta se samaan "koksi" hakemistoosi.
- Käynnistä Koksi simulaattori (koksi.exec), nollaa sen muisti.
Useimmiten simulattorin kontrollointi on helpompaa näppäimistön
(return, nuolet, Esc) avulla kuin hiirtä käyttäen.
- Laita asetuksista optio "kommentointi" päälle
- Lataa ja käännä ohjelma "sum.k91".
- Mitkä ovat symbolien DONE, KBD ja LUKU arvot?
- Suorita ohjelma syötteillä 5, 4, 3 ja 0. Mikä arvo tulostui?
- Missä muistipaikassa muuttujan SUMMA arvo on talletettuna?
- Laita asetuksista optio "kommentointi" pois päältä ja
suoritusnopeudeksi "hidas".
- Suorita ohjelma syötteillä 4, 3 ja 0. Mikä arvo tulostui? Miksi
tulostettu arvo oli väärin?
Esitä kaksi periaattellisesti erilaista tapaa korjata asia.
- Kokeile molempia tapoja korjata asia ja näytä, että
lähestymistapasi olivat oikeita.
- Muuta ohjelmaa sillä tavoin, että annettujen lukujen summan asemesta
lasketaankin niiden tulo. Voit editoida ohjelmaa joko suoraan Koksi
simulaattorissa valitsemallasi editorilla (alustustiedostosta Koksi.cfg)
tai simulattorin ulkopuolella millä tahansa tekstipohjaisen tiedoston
tuottavalla editorilla. Kaikki Koksi ohjelmatiedostot täytyy kuitenkin
tallettaa tuohon samaan "koksi" hakemistoon.
Teemu Kerola