Tietokoneen toiminta, K2003, LH 3
Nämä tehtävät käsitellään harjoituksissa viikolla 14, 31.3-4.4.2003
Huomaa, että jotkut laskuharjoitusryhmät on todennäköisesti peruutettu viikolta 14 alkaen. Lakkautetut ryhmät ilmoitetaan kurssin aikataulusivulla.
- 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 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
Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin avulla.
- 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
- Alustaa osoitinmuuttujan 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?
- 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 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 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.
Teemu Kerola