T3.2/T3.3 Funksjonskall Flashcards
1
Q
Hvilke oppgaver skal utføres ved et funksjonskall?
A
- Legge parameterne et sted funksjonen kan få tak i dem
- Overfør kontroll til funksjonen
- Alloker nødvendige ressurser (til f.eks. registre, minne)
- Utføre oppgaven
- Legge returverdien et sted der den som kalte funksjonen kan få tak i den
- Overføre kontroll til kallstedet
2
Q
- Hvorfor må vi huske hvor en funksjon har blitt kalt fra?
A
Fordi funksjoner typisk kalles fra mange ulike steder i koden
3
Q
- Blad funksjoner
A
Funksjoner som ikke trenger å kalle på andre
4
Q
- Hva går konseptet kallkonvensjon ut på?
A
- Regler for hvilken tilstand som bevares etter funksjonskall for å sikre interoperabilitet mellom kompilatorer, bibliotek, osv.
- Bruker logiske navn til registrene, istedenfor fysiske navn
5
Q
Hva er statiske data?
A
Data som bestemmes når programmet kompileres. De bruker stakken.
6
Q
- Stakk
A
En data struktur for “spilling” registre organisert som en LIFO kø.
7
Q
- Hva gjør en stakk?
A
- Stakk peker i RISC-V
- Legger elementet til i en stakk
- Fjerner elementet fra en stakk
- Vokser fra større adresser til mindre
8
Q
Hva er dynamiske data?
A
Data som bestemmes mens programmet kjører. De bruker en heap.
9
Q
- En heap vokser mot
A
høyere addresser
10
Q
- Hvis stakken møter dynamisk allokerte data
A
får vi “stack overflow”
11
Q
- Minnekart
A
beskriver hvordan adresserommet skal brukes