Bonjour et bienvenue !
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
drenalyn
je voudrais comprendre ce que signifie une telle ligne :
mov dword ptr fs:[00000000],ecx
Le terme ptr designe quoi ? et dword ?
La directive dword ptr indique à l'assembleur (le compilateur) la taille de la donnée à transférer. Dans l'instruction que tu cites, cette directive est superflue car l'assembleur sait déjà qu'il a affaire à une donnée 32 bits, puisque le registre 32 bits ecx se trouve dans l'instruction.
Par contre, la directive est indispensable dans une instruction comme celle-ci :
mov fs:[00000000],dword ptr [ebx]
qui signifie "copier à l'adresse fs:[00000000] la donnée se trouvant à l'adresse ds:[contenu du registre ebx]". Dans ce cas, l'assembleur ne peut savoir tout seul s'il doit copier 8, 16 ou 32 bits :
- byte ptr --> 8 bits
- word ptr --> 16 bits
- dword ptr --> 32 bits
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
drenalyn
Le terme push permet de mettre une valeur dans la pile ?
Pour la recuperer il suffit d'utiliser pop ?
Exact : push empile une valeur (sur le sommet de la pile) et pop la dépile.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
drenalyn
Pour vider entierement la pile, faut-il faire push 00000000 ?
Combien de niveaux contient la pile ?
"Vider la pile" n'a guère de sens et le "nombre de niveaux" dépend de la taille allouée à la pile.
En fait, quelle est l'utilité de la pile ?
- Un espace de stockage temporaire.
- L'endroit où est stockée l'adresse de l'instruction suivante avant d'exécuter une procédure, pour reprendre le cours normal du programme lorsque la procédure est terminée.
- L'endroit où sont généralement allouées les variables locales d'une procédure.
Partager