On dit que leave
est la même chose que:
mov esp,ebp
pop ebp
Mais pour quoi mov esp,ebp
ici? Cela ne me semble pas valable ...
On dit que leave
est la même chose que:
mov esp,ebp
pop ebp
Mais pour quoi mov esp,ebp
ici? Cela ne me semble pas valable ...
mov esp,ebp
définit le pointeur de pile sur l'adresse de la base, libérant ainsi la totalité du cadre. (N'oubliez pas que c'est la syntaxe Intel, la destination vient en premier.) Si vous ne le faites pas, une fois que vous appelez ret
, vous utiliseriez toujours le cadre de pile de la fonction appelée avec votre fonction d'appel. , avec des conséquences catastrophiques.
Je pense que votre problème est le fait qu'il y a deux façons différentes d'écrire x86 assemblée. L'un est l'AT&T de la notation et de l'autre est le processeur Intel notation. L'ordre des arguments d'une instruction sont inversés dans Intel notation plutôt que AT&T. Votre version de l'assemblée semble être en Intel notation, ce qui signifie qu' mov esp, ebp
actaully déplace la valeur en ebp
de esp
. Dans le plus logique (à mon avis) de AT&T de la notation, il serait mov %ebp, %esp
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.