Tietokoneen toiminta, kesä 2000
Harjoitus 4
Käsitellään harjoitusryhmissä torstaina 17.8.2000.
-
Käännä seuraava rekursiivinen aliohjelma konekielelle:
static long Duo(int n) {
if n <1 then return 1 else
return Duo(n-1)+n+1;
}
Kirjoita myös yksinkertainen pääohjelma, jossa kutsutaan metodia Duo.
-
Kuvaa prosessorin rekistereiden tasolla, miten käskynouto tehdään.
Miksi ohjausyksikkö kasvattaa jokaisen käskynoudon yhteydessä käskyosoitinta?
Mitä tapahtuisi, jos tätä ei tehtäisi? Voitaisiinko käskyosoittimen kasvatus
tehdä vasta käskyn suorituksen jälkeen?
- Esitä prosessorin rekisterien tasolla miten suoritetaan seuraavat käskyt:
- MUL R2,@5
- STORE R2,@R5
- SUB R5,5(R5)
- JPOS R5, 100
- SVC SP,=11 ;palvelupyyntö HALT 1
-
Mitä eri keskeytyksiä tai poikkeustilanteita edellisen tehtävän käskyjen
suorituksen aikana voi tapahtua? Miten keskeytykset havaitaan?
Miten niihin reagoidaan? Missä tapauksessa keskeytyksen jälkeen on
mahdollista jatkaa saman ohjelman suorittamista?
-
Lukujärjestelmien muunnoksia
- Muunna seuraavat binäärijärjestelmän luvut kymmen- ja
heksadesimaalijärjestelmiin: 110111, 1100.011
- Muunna seuraavat kymmenjärjestelmän luvut binäärijärjestelmään:
107, 0.625, 2.75
- Komplementtiluvut.
- Suorita laskutoimitus 34 - 47 kahden komplementtimuodossa.
- Mitä hyötyä kahden komplementtimuodosta on? Olisiko yhden
komplementtimuoto yhtä hyödyllinen?
- Mistä tiedät, onko kahden komplementtimuodossa esitetty luku positiivinen
vai negatiivinen?
- Mikä on pienin ja suurin kokonaisluku, jonka voi kahden
komplementtimuotoa käyttäen esittää 32 bitillä?