1
|
- Tyypit
- Parametrit
- Aktivointitietue (AT)
- AT-pino
- Rekursio
|
2
|
- Korkean tason ohjelmointikielen käsitteet
- aliohjelma, proseduuri
- funktio
- metodi
- parametrit, ehkä paluuarvo
- Konekielen tason vastaavat käsitteet
- aliohjelma
- parametrit ja paluuarvo(t)
|
3
|
- Muodolliset parametrit
- määritelty aliohjelmassa
ohjelmointihetkellä
- tietty järjestys ja tyyppi
- paluuarvot
- käsittely hyvin samalla tavalla kuin parametreillekin
- Todelliset parametrit ja paluuarvo
- todelliset parametrit sijoite-
taan muodollisten parametrien
paikalle kutsuhetkellä suoritusaikana
- paluuarvo saadaan paluuhetkellä ja sitä käytetään kuten mitä tahansa
arvoa
|
4
|
- Arvoparametri
- välitetään parametrin arvo (eli sen kopio) kutsuhetkellä
- itse parametrin arvoa ei voi muuttaa (mutta sen arvon kopiota voi
muuttaa)
- Viiteparametri
- välitetään parametrin osoite
- arvo voidaan lukea, arvoa voi muuttaa
- Nimiparametri
- välitetään parametrin nimi
- nimi (merkkijono) kuvataan arvoksi kutsuhetkellä
- semantiikka määräytyy vasta kutsuhetkellä
|
5
|
- Välitetään todellisen parametrin arvo
- muuttuja, vakio, lauseke, pointteri, olioviite
- Aliohjelma ei voi muuttaa mitenkään todellisena parametrina käytettyä
muuttujaa
- muuttujan (esim. y) arvo
- olioviitteen arvo
- lausekkeen arvo
- muuta arvoparametrin arvoa aliohjelmassa
Þ
muutetaan todellisen parametrin arvon kopiota!
- todellisen parametrin ptrX arvoa ei voi muuttaa
- osoitinmuuttujan osoittamaa arvoa voidaan muuttaa
(osoitinmuuttuja ptrX on siis välitetty arvoparametrina)
- Javassa ja C:ssä vain arvoparametreja
|
6
|
- Välitetään todellisen parametrin osoite
- muuttujan osoite (tai koodin osoite)
- Aliohjelma voi muuttaa parametrina annettua muuttujan arvoa
- Pascalin var parametri
|
7
|
- Välitetään todellisen parametrin nimi
- merkkijono!
- Algol 60
- yleensä makrot
- sivuvaikutuksia
- nimiparametri korvataan todellisella parametrilla joka viittauskohdassa
tekstuaalisesti
|
8
|
- Paluuosoite
- kutsukohtaa seuraava käskyn osoite
- Parametrien välitys
- Paluuarvon välitys
- Paikalliset muuttujat
- Rekistereiden allokointi (varaus)
- kutsuvalla ohjelman osalla voi olla käytössä rekistereitä, joiden arvon
halutaan säilyä!
- pääohjelma, toinen aliohjelma, sama aliohjelma, metodi, …
- käytettyjen rekistereiden arvot pitää aluksi tallettaa muistiin ja
lopuksi palauttaa ennalleen
|
9
|
- Aliohjelman toteutusmuoto (ttk-91)
- funktion paluuarvo
(tai kaikki paluuarvot)
- kaikkien (sisäänmeno- ja ulostulo-)
parametrien arvot
- paluuosoite
- kutsukohdan aktivointitietue
- kaikki paikalliset muuttujat ja tietorakenteet
- aliohjelman ajaksi talletettujen rekistereiden alkuperäiset arvot
|
10
|
- Aktivointitietueet (AT) varataan ja vapautetaan dynaamisesti
(suoritusaikana) pinosta (muistista)
- SP (=R6) osoittaa pinon pinnalle
- Aktivointitietuepino
- FP (R7) osoittaa voimassa olevan
AT:n sovittuun kohtaan
(ttk-91: vanhan FP:n osoite)
- Pinossa olevaa AT:tä rakennetaan
ja puretaan käskyillä:
- PUSH, POP, PUSHR, POPR
- CALL, EXIT (SVC, IRET)
|
11
|
- Toteutus jaettu eri yksiköille
- varaa tilaa paluuarvolle pinosta
- laita parametrit (arvot tai osoitteet) pinoon
- talleta vanha PC ja FP, aseta uudet PC ja FP
- varaa tilaa paikallisille muuttujille
- talleta käytettävien rekistereiden
vanhat arvot pinoon
- (itse aliohjelman toteutus – varsinainen työ)
- palauta rekistereiden arvot
- vapauta paikallisten muuttujien tila
- palauta PC ja FP
- vapauta parametrien tila
- ota paluuarvo pinosta
|
12
|
|
13
|
|
14
|
|
15
|
|
16
|
|
17
|
|
18
|
- Aliohjelma, joka kutsuu itseään
- Ei mitään erikoista muuten
- Aktivointitietue hoitaa tilanvarauksen automaattisesti paikallisille
muuttujille joka kutsukerralla (uusi AT joka kutsukerralla)
- Rekursio ei onnistu, jos paikallisten muuttujien tilanvaraus aliohjelman
ohjelmakoodin yhteydessä
- Joka kutsukerralla suoritetaan sama koodi-
alue (aliohjelman koodi), mutta dataa varten on käytössä oma
aktivointitietue
|
19
|
|
20
|
|
21
|
- Samalla tavalla kuin aliohjelman kutsu
- Tila paluuarvolle?
- Parametrit pinoon
- SVC kutsu
- IRET paluu
- Paluuarvo (OK, virhe) pois pinosta tarkistusta varten
|
22
|
|