Bonjour,

Je n'arrive à comprendre / visualiser ce qu'est l'ARP dans la pile.

Par exemple si je prends le code suivant :

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);
}
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
9
10
11
12
13
14
15
16
17
18
19
 
|////////|
|--------|
|@retour |
|--------|
|OLD ARP |
|--------|
|   x:2  |
|--------|
|--------|
|    n   |
|--------|
|@retour |
|--------|
|OLD ARP |   // <----- ARP
|--------|
|    y:n |
|--------|
|////////|
Pour moi le @retour va être l'adresse de l'appel de inutile(x); + la taille de l’instruction de l'appel.
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_