Harjoitukset
Huom! Pääsiäsiviikolla on luennot ma 25.3.2002 ja ke 27.3.2002, mutta
3.4.2002 ei ole luentoa.
Tietokoneen toiminta, K2002, LH 3
Nämä tehtävät käsitellään harjoituksissa viikoilla 13 ja 14,
26.3-27.3.2002 ja 4.4.2002)
- Täydennä (esimerkkihakemistossa olevaa) ohjelmaa lh_kutsu.k91
toteuttamalla aliohjelma SUBR(X, A, B), joka tulosparametrin X arvoksi
arvoparametrien A ja B erotuksen. X välitetään viiteparametrina.
Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin
avulla.
- [2 htp] Tee ttk-91 koneen symbolisella konekielellä ohjelma, joka
- Varaa tilaa 20-alkioiselle taulukolle Tbl[20]
- Alustaa suoritusaikana taulukon Tbl siten, että Tbl[i] = i*i
- Laskee taulukon Tbl alkioiden summan siten, että indeksirekisterissä
R1 on aina käsiteltävän taulukon alkion indeksi. Uusi alkio
ladattaisiin siis R3:een konekäskyllä "LOAD R3,
Tbl(R1)".
- Tulostaa lasketun summan
- Alustaa osoitin muuttujan Xptr osoittamaan taulukon Tbl ensimmäiseen
alkioon
- Tulostaa osoitinmuuttujan Xptr arvon
- Laskee taulukon Tbl alkioiden summan siten, että osoitinrekisterissä
R2 on aina käsiteltävän taulukon alkion osoite (pointteri).
Uusi alkio ladattaisiin siis konekäskyllä "LOAD R3,
@R2".
- Tulostaa lasketun summan
Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin
avulla.
- Ttk-91 koneen konekäskyn osoiteosa on vain 16-bittinen. Tämä asettaa
rajoituksia käskyssä olevien vakioiden koolle.
- Mikä on suurin positiivinen luku, joka voidaan esittää käskyssä
vakiona?
- Mikä on pienin negatiivinen luku, joka voidaan esittää käskyssä
vakiona?
- Miten tulee toimia, jos tarvitaankin suurempaa vakiota? Esimerkiksi
lukua 500000?
- Entä miten tulisi menetellä, jos tarvitaan suurta vakiota
indeksoidun osoitusmoodin kanssa? Esimerkiksi, jos halutaan lukea data
osoitteesta (R1)+666666?
- Muistiviitteet.
- Miten monta muistiinviitausta eri ttk-91 koneen konekäskyt voivat
tehdä? Mikä on "huonoin" käsky tässä mielessä? Mikä on
"paras"?
- Kumpi on tärkein tekijä tässä suhteessa, operaatiokoodi, tiedon
osoitusmuoto vai molemmat? Miksi?
- Tiedon esitys.
- Mikä on desimaalijärjestelmän luvun 43.234 binääriesitys?
- Mitä desimaalijärjestelmän lukua binääriluku 101010.1010 vastaa?
- Mikä on desimaalilukujen +23 ja -75 esitys seuraavissa 16 bitin
Big-Endian esitysmuodoissa:
- etumerkillinen (sign and magnitude)
- kahden komplementti (two's complement)
- yhden komplementti (one's complement)
- 32767 vakiolisäys (biased by 32767)
- Mikä on desimaaliluvun 33.125 IEEE liukulukustandardin mukainen
esitys?
- Oletetaan, että ohjelmointikielessä MyLan on totuusarvo (boolean) ja
liukuluku tietotyypit. Esimerkiksi, siinä voidaan käyttää boolean
tai float tyyppisiä muuttujia.
Ttk-91 koneessa ei kuitenkaan ole tällaisia tietotyyppejä. Voisiko
MyLan kielelle tehdä kääntäjän, jonka avulla MyLan kielisiä
ohjelmia voisi suorittaa ttk-91 koneessa? Jos voi, niin miten? Jos ei
voi, niin miksi ei?
Noudata aliohjelmien ja funktioiden toteutuksessa luennolla esitettyä tapaa
aktivointitietueen rakentamiseen ja purkamiseen. Huolehdi, että kaikkien
työrekistereiden (R0-R5) arvot ovat samat aliohjelmasta tai funktiosta
palatessa kuin ne olivat kutsuhetkellä.
Varaudu esittämään kaikki Koksiin liittyvät tehtävät mikrotietokoneella
harjoitustilaisuudessa. Pidä mukanasi levykettä harjoitusta varten tekemiesi
ohjelmien tallettamiseen.
Paivi.Kuuppelomaki@cs.Helsinki.FI