Tietokoneen toiminta, kevät 2004
Harjoitus 6
Käsitellään harjoitusryhmissä tiistaina 8.6.2004.
Varaudu harjoituksiin etukäteen tutustumalla käsiteltävään asiaan ja yrittämällä itse tehdä tehtäviä niin
paljon kuin mahdollista.
Harjoitustilaisuudessa tehtävät 'viimeistellään' ryhmissä.
- Nimen sidonta
Ohjelmassa käytetyn nimen sidonta sen lopulliseen arvoon voi tapahtua ainakin seuraavien tapahtumien yhteydesssä: ohjelman kirjoitusaikana, käännösaikana, linkityksen aikana, latauaaikana, kantarekisterin (tai muun KJ-rekisterin) asetuksen aikana tai konekäskyn suoritusaikana. Milloin seuraavisen esimerkkien nimien sidonta tapahtuu? Perustele.
operaatio nimet
a) ADD R1, parX (FP) R1?, ParX? FP? ADD?
b) XX DC 456789 XX?
c) CALL SP, IO.Print Print?
d) DD EQU 65 DD?
e) locX = 3456789; locX? c-kielen muuttuja
Kussakin tapauksessa perustele, miksi sidonta ei voisi tapahtua aikaisemmin tai myöhemmin.
- Java-ohjelmia (tavukoodia) voidaan suorittaa (ainakin) neljällä eri
tavalla: tulkitsemalla, tavallisella käännöksellä, Just-In-time
-käännöksellä tai suoraan Java-suorittimella.
- Anna esimerkkejä tilanteesta, jolloin tulkitseminen olisi parempi
kuin muut vaihtoehdot. Perustele, miksi muut tavat olisivat huonompia.
- Anna vastaavat esimerkit ja perustelut tilanteista, jolloin muut e.m.
vaihtoehdoista olisivat parhaita vaihtoehtoja.
- Mikä olisi paras vaihtoehto (Java) ohjelmoinnin harjoitustyön
suorittamiseen? Miksi?
- Mitä prosesseja järjestelmässä tarvitaan ohjelman
suoritushetkellä, jos Java ohjelmaasi MyProg suoritetaan 1)
tulkitsemalla, 2) tavallisella käännöksellä, 3) Just-In-Time
-käännöksellä tai 4) suoraan Java-suorittimella?
- Kertausta ohjelman suorittamisesta (kokeessa usein kysyttyä)
- Kuvaa prosessorin rekistereiden tasolla, miten tehdään käskynouto.
-
Esitä prosessorien rekisterien tasolla, miten suoritetaan käskyt:
LOAD R2, =100
COMP R2, @10(R2)
JNLES away
....
away ....
- Jos muistipaikkoihin 100-300 on talletettu ko. muistipaikan osoite eli paikassa 100 on luku 100, paikassa 101 luku 101 jne, niin hypätäänkö ohjelmassa osoitteeseen away vai ei?
- Kertausta tiedon esitysmuodoista.
- Muuta luku 109.625 binäärimuotoon.
- Esitä luku -42 kahden komplementtimuodossa.
- Mitä desimaalilukua 32-bittinen IEEE:n standardin mukainen liukulukuesitys 0xC1600000 (heksadesimaaliluku) tarkoittaa?
- Kertausta aliohjelmista.
Kokonaislukuarvoinen taulukko T[40] on määritelty pääohjelmatasolla.
Taulukossa on siis 40 alkiota (alkiot 0,...,39).
- Anna taulukon T määrittely.
- Tee funktio Laske(S, N), joka palauttaa arvonaan N-alkioisen taulukon
S positiivisten alkioiden lukumäärän. Noudata suositusten mukaista aliohjelmien
(funktioiden) toteutustapaa ja kutsumekanismia. Parametri S on viiteparametri ja parametri
N on arvoparametri.
- Anna ttk-91 symbolisen konekielen konekäskyt, joilla em. funktiota käyttäen tulostetaan
(muualla, pääohjelmatasolla määritellyn) 40 alkioisen taulukon T positiivisten alkioiden
lukumäärä. Noudata suositusten mukaista aliohjelmien kutsumekanismia. Parametri S on
viiteparametri ja parametri N on arvoparametri.
- Miten funktiota Laske tulisi muuttaa, jos se palauttaisikin taulukon S positiivisten
alkioiden lukumäärän sijaan taulukon S parittomien alkioiden lukumäärän.
- Piirrä aktivointiotietuepino kohdan b) aliohjelman kutsun jälkeen ja juuri ennen
aliohjelmasta paluuta
- Palautetta kurssista
- Kurssin tavoitteena on tarjota perustiedot tietokoneen toiminnasta 2 ov:n mittaisella kurssilla.
Tarjosiko kurssi mielestäsi tähän tavoitteeseen sopivan
peruspaketin? Mikä osa kurssin materiaalista tuntui turhalta ja
tarpeettomalta? Mitä tärkeitä asioita kurssilta puuttui?
Mistä asioista olisit halunnut tietää enemmän?
- Saitko kurssin perusteella mielestäsi riittävän selkeän ja
kattavan kuvan tietokoneen toiminnasta?
Mitkä asiat tuntuivat turhan vaikeilta ja monimutkaisilta? Luettele
mielestäsi kolme vaikeinta asiaa. Mitkä asiat taas tuntuivat
helpoilta?
- Muita kommentteja kurssista.
- Vastaa myös seuraaviin kysymyksiin
- Montako tuntia olet käyttänyt tähän kurssiin yhteensä tähän
asti aikaa?
Luentojen seuraamiseen? Harjoituksiin? Itseopiskeluun?
- Kuinka paljon aikaa käytit harjoituksiin valmistautumiseen ennen harjoitustilaisuutta?
Kuinka paljon aikaa käytit itsellesi vaikeiden kohtien selvittämiseen harjoitustilaisuuden jälkeen?
- Kuinka suureen osaan luennoista osallistuit? (100%, 90%, ...)
- Jos osallistuit lähes kaikkiin luentoihin, niin opitko perusasiat
luennoilla vai pitikö niitä vielä kovasti opiskella kirjoista?
- Käytitkö englanninkielisiä oppikirjoja? Kuinka paljon?