581305-6 Tietokoneen toiminta, 2 ov, kurssikuulustelu 11.5.2001 (Andra
sidan på svenska )
Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi,
opiskelijanumero (tai henkilötunnus),
kokeen tai kurssin nimi, nimikirjoitus ja sivunumero.
- [12 p] Tiedon esitys.
- [3 p] Anna erikseen Big Endian ja Little Endian 16-bittisten
desimaalilukujen +75 ja -23 esitys koneessa, kun kokonaislukujen
esitysmuoto on
- etumerkkibitti erikseen
- kahden komplementti
- yhden komplementti
- lisättynä 32767:lla (32767=215-1)
- [3 p] Oletetaan, että käytössä on yleisin Big Endian tavujärjestys.
Mitä liukulukua 32-bittinen IEEE standardin (8 bitin exponentti)
mukainen arvo 0x41100000 esittää?
(Etuliite "0x" tarkoittaa, että perässä tuleva luku on
heksadesimaalimuotoinen)
- [3 p] Miten merkkijonoja talletetaan koneessa? Anna täsmällinen
esimerkki merkkijonon
"very simple" tallentamisesta muistiosoitteeseen 0x1A00.
- [3 p] Ttk-91 koneessa ei ole liukulukuja käyttäviä konekäskyjä.
Voiko ttk-91:n avulla suorittaa liukulukulaskentaa? Jos voi, niin miten?
Jos ei voi, niin miksi ei?
- [12 p] Suoritin ja prosessi (processor and process)
- [3 p] Mitkä ovat suorittimen suoritusaikaiset tilat (processor state)?
- [3 p] Miten ja milloin suorittimen tila muuttuu? Käsittele kukin
mahdollinen tilasiirtymä erikseen.
Kerro kustakin tilasiirtymästä esimerkkitapahtuma, joka voisi aiheuttaa
kyseisen tilasiirtymän.
- [3 p] Mitkä ovat prosessin suoritusaikaiset tilat (process state)?
- [3 p] Miten ja milloin prosessin tila muuttuu? Käsittele kukin
mahdollinen tilasiirtymä erikseen.
Kerro kustakin tilasiirtymästä esimerkkitapahtuma, joka voisi aiheuttaa
kyseisen tilasiirtymän.
- [12 p] Java-ohjelmien suoritus tulkitsemalla Pentium-suorittimella
varustetussa tietokoneessa.
Oletetaan, että Java-ohjelmassasi on lauseke A = B+C;
- [3 p] Mikä on tuon lausekkeen esitysmuoto tietokoneen muistissa
suoritusaikana?
Missä sijaitsevat muuttujien A, B ja C arvot? Rekisterissä vai
muistissa?
- [3 p] Miten Pentium-suorittimella varustettu tietokone suorittaa tuon
Java-ohjelman lausekkeen?
- [3 p] Minkälainen prosessi on suoritusvuorossa tuon Java-ohjelman
lausekkeen suoritusaikana?
- [3 p] Jos ohjelman suoritus tapahtuisikin JIT-käännöksen avulla,
niin miten kohtien a, b ja c vastaukset muuttuisivat?
- Bonus kysymys [1 p]: Miten Java eroaa C#:sta?
- [12 p] Ttk-91 koneen konekieli. Kokonaislukuarvoinen taulukko T[20]
on määritelty pääohjelmatasolla. Taulukossa on siis 20 alkiota (alkiot
0,...,19). Kokonaislukumuuttuja k on myös määritelty pääohjelmatasolla.
- [3 p] Anna konekäskyt, joilla tulostetaan alkion T[k] arvo.
- [3 p] Anna konekäskyt, joilla alustetaan taulukko T siten, että T[i]
= i2 + 3 kaikille T:n alkioille.
- [3 p] Tee aliohjelma Alusta(S, N), joka kutsuttaessa alustaa
kokonaislukuarvoisen N-alkioisen taulukon S siten, että S[i] = i2
+ 3 kaikille taulukon S alkioille. Noudata suositusten mukaista
aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia. Parametri S
on viiteparametri ja parametri N on arvoparametri.
- [3 p] Anna ttk-91 symbolisen konekielen konekäskyt, joilla
aliohjelmaa Alusta(S, N) käyttäen alustetaan taulukko T siten, että
kunkin alkion T[i] arvoksi tulee i2 + 3. Noudata
suositusten mukaista aliohjelmien kutsumekanismia. Parametri S on
viiteparametri ja parametri N on arvoparametri.
TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV,
MOD, AND, IR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS,
JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC