- Tehtävä 1-2: KOKSIn asennus
Opettele käyttämään Koksi simulaattoria. Simulaattori on saatavilla kurssin
kotisivulta http://www.cs.helsinki.fi/u/kerola/tito/
ja aiempien vuosien kursseilta. Yleisiä ohjeita ja ratkaisuja tämän
kevään ongelmiin ilmestyy tarvittaessa tämän (Kevät 2004) kurssin kotisivulle
http://www.cs.helsinki.fi/u/niklande/opetus/K2004/TietokoneenToiminta.html
- Kopioi koksi.zip sopivaan hakemistoon (esim hakemisto
"koksi") ja 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:\winnt\system32\edit.com")
alustustiedoston Koksi.cfg ainoaksi riviksi.
- Imuroi Koksi-esimerkkiohjelmista
http://www.cs.helsinki.fi/teemu.kerola/tito/esimerkit
tiedosto sum.k91 ja talleta se koksi-ohjelman kanssa samaan
hakemistoon.
- Käynnistä koksi-simulaattori (koksi.exe) ja nollaa sen muisti.
Simulattorin käyttö on helpompaa näppäimistön
(return, nuolet, Esc) kuin hiiren avulla.
- 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 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 (, jonka
hakemistopolun kirjoitit alustustiedostoon
Koksi.cfg) tai simulattorin ulkopuolella millä tahansa tekstipohjaisen
tiedoston tuottavalla editorilla. Kaikki Koksi-ohjelmatiedostot täytyy
kuitenkin tallettaa koksi-simulaattorin kanssa samaan hakemistoon.
- Tehtävä 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.
- Missä fyysisesti erilaisissa tietokoneen komponenteissa ohjelman
Simple muuttujan X arvo voi sijaita (TTK-91 koneessa) ohjelmaa
suoritettaessa? Anna kaksi vaihtoehtoa. Perustele vastauksesi.
Anna seuraaviin kysymyksiin vastaukset TTK-91 koneen osalta
erikseen kummallekin vaihtoehdolle.
- Millä konekäskyillä X:n arvon voi tulostaa?
- Millä konekäskyillä X:n osoitteen voi tulostaa?
- Millä konekäskyillä X:n arvoksi asetetaan luku 65?
- Millä konekäskyillä X:n osoitteeksi asetetaan luku 211?
- Millä konekäskyillä X:n arvo voidaan tallettaa muistiin
muuttujan Y arvoksi?
Kokeilithan vastauksiasi myös simulaattorilla.
- Tehtävä 4: Korkean tason kieli vs. symbolisen konekielen käskyt.
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ä
- SUB
- MOD
- OR
- XOR
- COMP
- JUMP
- JNGRE
- 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ä?
- Tehtävä 5: Muistin osoitusmuodot.
Oletetaan, että kullakin käskyllä jatkossa lähtötilanne on luennon 2 kalvon
19 (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
- LOAD R1,@R2(R3)
Voit myös kokeilla käskyjä simulaattorilla.
- Tehtävä 6: 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?
Tiina.Niklander@cs.helsinki.fi