8
votes

Que signifie "pousser EBP" dans l'assemblage X86?

Je suis désassemblé d'un fichier .exe et j'ai eu ceci comme première ligne.

push ebp
  • Qu'est-ce que cela signifie? LI>
  • pourquoi EBP code>? li>
  • a-t-il quelque chose à voir avec la commande pop code>? Même si je ne le vois pas dans le démontage! Li> ul> p>


1 commentaires

Vous ne voyez pas la commande correspondante pop dans le démontage, car le < Code> Le laisser est utilisé à la place.


3 Réponses :


13
votes

push Ebp code> signifie simplement pousser tout ce qui est dans enregistrer EBP code> sur la pile. EBP code> stocke le pointeur de la pile par convention.

Ceci est généralement utilisé pour établir un cadre de pile , suivi de p>

mov     ebp, esp


3 commentaires

Vous pouvez également voir le congé d'instruction à la fin de la fonction, ce qui équivaut à MOV ESP, EBP suivi de POP EBP. C'est pourquoi vous ne pouvez pas voir une pop explicite.


Donc, cela signifie-t-il que toutes les applications commencent par PUSH EBP suivi de MOV EBP, ESP ?


Plus. Toutes les applications qui utilisent le registre EBP pour l'adressage variable ou tout ce qui doit restaurer le cadre de pile du programme d'appel.



2
votes

Il appuie sur la valeur du registre EBP sur la pile et est le plus couramment utilisé pour configurer un empilement. pop récupère une valeur de la pile.


0 commentaires

2
votes

L'instruction PUSH enregistre la valeur d'un registre sur la pile. La valeur peut ensuite être récupérée à l'aide d'une instruction pop.

Stack Wikipedia (structure de données): http://fr.wikipedia.org/ Wiki / Stack_% 28Data_Structure% 29


0 commentaires