Bonjour,
Je vous propose un nouvel élément à utiliser : Interfacer du code assembleur et du C
Ce code source montre comment utiliser correctement une fonction C de la bibliothèque standard GNU libc dans un code écrit en assembleur GNU.
Important[1] : Les étapes 3-9 d'appel des sous programmes en assembleur (http://asm.developpez.com/telecharge...-en-assembleur) sont invisibles, puisque nous sommes pas responsable de l'implémentation de la fonction standard. On va juste l'utiliser !
Important[2] : L'ordre de passage des paramètres par la pile est significatif !!!
Notre code utilise deux fonctions : scanf et printf. Leur stack frame est organisé comme suit :
Les valeurs de retour de scanf est printf sont passées via le registre EAX.
Code texte : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ---------------------------------------------------------------- adresse | paramètre --------------+------------------------------------------------- 0(%ebp) | l'ancien EBP ------------- +------------------------------------------------- 4(%ebp) | adresse de retour --------------+------------------------------------------------- 8(%ebp) | adresse de format (pformat et sformat) --------------+------------------------------------------------- 12(%ebp) | valeur/adresse de la variable jour --------------+------------------------------------------------- 16(%ebp) | valeur/adresse de la variable mois --------------+------------------------------------------------- 20(%ebp) | valeur/adresse de la variable an ----------------------------------------------------------------
Qu'en pensez-vous ?
Partager