17. appel de fonction Flashcards
En ARM, une fonction est
un ensemble d’instructions à une
adresse donnée.
*
On identifie la fonction par
une étiquette
On appelle la fonction avec
un branchement à cette étiquette
Pour pouvoir revenir à plus d’un endroit, il faut sauvegarder
l’adresse de retour (avant de faire le branchement)
Instruction de sauvegarde
BL (Branch and Link)
Tout d’abord, place l’adresse de retour dans LR
* Ensuite, branche à l’étiquette
À la fin de la fonction, on veut retourner à l’adresse de
retour
* Cette adresse a été stockée dans—– par —–
LR par le BL
Il suffit donc d’y brancher avec l’instruction BX, qui
place le contenu de LR dans PC
BX LR ; PC = LR
Structure de données des piles
LIFO = Last In, First Out
Deux opérations principales des piles
PUSH: rajoute un élément sur
« le dessus » la pile
* POP: enlève un élément du
« dessus » de la pile
numéro de registre du pointeur de pile
r13, sp
sp indique
la donnée retournée si on POP
est-ce que on peut modifier r13 directement
non. utiliser push et pop
comment fonctionne push
PUSH {Rs} ; (pile)
1) SP = SP - 4
; 2) place le contenu de Rs à l’adresse
indiquée par SP
comment fonctionne pop
POP {Rd} ; (dépile)
1) Place le contenu à l’adresse indiquée
par SP
; 2) SP = SP + 4
Lors d’un PUSH, les registres sont empilés du
plus —- au plus —- numéro de registre
Lors d’un PUSH, les registres sont empilés du
plus grand au plus petit numéro de registre
Lors d’un POP, les registres sont dépilés du
plus —- au plus — numéro de registre
Lors d’un POP, les registres sont dépilés du
plus petit au plus grand numéro de registre