Bonjour,
Je n'arrive à comprendre / visualiser ce qu'est l'ARP dans la pile.
Par exemple si je prends le code suivant :
je dessine la pile qui en découle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void inutile(int n){ int y = n; } void main(void){ int x = 2; inutile(x); }
Pour moi le @retour va être l'adresse de l'appel de inutile(x); + la taille de l’instruction de l'appel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |////////| |--------| |@retour | |--------| |OLD ARP | |--------| | x:2 | |--------| |--------| | n | |--------| |@retour | |--------| |OLD ARP | // <----- ARP |--------| | y:n | |--------| |////////|
Mais pour ce qui est de ARP et OLD ARP je ne comprends pas, j'ai compris qu'on allait s'en servir pour récupérer les paramètres en faisant ARP + x*w avec w la taille du mot, et accéder aux variables locales en faisant ARP - x*w. Mais ça reste assez flou dans mon esprit.
En vous remerciant par avance,
Cordialement,
reverse_
Partager