Tietokoneen toiminta, S2003, LH 3
Nämä tehtävät käsitellään harjoituksissa viikolla 47, 17-21.11.2003
- Täydennä (esimerkkihakemistossa olevaa) ohjelmaa lh_kutsu.k91
toteuttamalla aliohjelma SUBR(X, A, B), joka antaa ulostuloparametrin X
arvoksi arvoparametrien A ja B erotuksen. X välitetään viiteparametrina.
A ja B ovat arvoparametreja.
Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin avulla.
- Tee ttk-91 koneen symbolisella konekielellä ohjelma, joka
- Varaa tilaa 10-alkioiselle taulukolle Arr[10]
- Alustaa suoritusaikana taulukon Arr siten, että Arr[i] = i*i*i
- Laskee taulukon Arr 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, Arr(R1)".
- Tulostaa lasketun summan
Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin avulla.
- Tee ttk-91 koneen symbolisella konekielellä ohjelma, joka
- Varaa tilaa 10-alkioiselle taulukolle Arr[10]
- Alustaa suoritusaikana taulukon Arr siten, että Arr[i] = i*i*i
- Alustaa osoitinmuuttujan Aptr osoittamaan taulukon Arr ensimmäiseen alkioon
- Tulostaa osoitinmuuttujan Aptr arvon
- Laskee taulukon Arr 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?
- Milloin on järkevää sijoittaa pieni vakio muistin vakioalueelle
(esim. "XX DC 35") sen
sijaan, että se sijoitettaisiin käskyyn (esim. "LOAD
R0, =35")?
- Järjestelmätietojen suojaus ja yhteiskäyttö?
- Miten voidaan estää tilanne, jossa käyttäjän ohjelma vahingossa (tahallaan) kirjoittaa käyttöjärjestelmän muistialueelle?
- Miten voidaan estää tilanne, jossa käyttöjärjestelmän ohjelma vahingossa (tahallaan) kirjoittaa sellaiselle käyttöjärjestelmän muistialueelle, johon sen ei pitäisi päästä käsiksi lainkaan?
- Miten voidaan estää tilanne, jossa käyttöjärjestelmän ohjelma vahingossa (tahallaan) kirjoittaa käyttäjätason ohjelman alueelle ja sotkee kyseisen ohjelman tietoja?
- Miten sallitaan tilanne, että käyttäjän ohjelma käyttää tilapäisesti sellaista käyttöjärjestelmän muistialuetta, johon sillä normaalisti ei olisi pääsyoikeutta?
- Miten voidaan estää I/O laitetta keskeyttämästä
käyttöjärjestelmäohjelman tärkeää
toimintoa, kun I/O laite ei edes tiedä mikä ohjelma on kulloinkin
suorituksessa saati sitten sitä, milloin jotain tärkeää
on tekeillä?
- Tiedon esitys.
- Mikä on desimaalijärjestelmän luvun 34.324 binääriesitys?
- Mitä desimaalijärjestelmän lukua binääriluku 101110.1010 vastaa?
- Mikä on desimaalilukujen +21 ja -55 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. Erityisesti, 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?
Käsittele boolean ja float-tyypit erikseen vastauksessasi.
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.
Teemu Kerola