J'ai de la difficulté à comprendre ce qui se passe ici, en ce qui concerne ce qui se trouve sur la pile, et où les registres ESP, EBP et SS pointent vers au point dans le code qui dit ICI. Voici mon codeAssemblage - Pile, Procédures, ESP, EBP, SS - Aidez-moi à comprendre
include \masm32\include\masm32rt.inc
.data?
value DWORD ?
.code
start:
push 42
push 5
call xyz
mov value, EAX
print str$(value)
exit
xyz:
enter 4, 0
; HERE
leave
ret 8
end start
donc je dois voir ce qui est sur la pile.
Voici ma meilleure estimation que l'endroit où tout est (ci-dessous est une pile de texte)
Vous devez lire le manuel sur ce que le 'enter' fait. Astuce: il ne pousse pas les deux opérandes sur la pile. En outre, 'ESP' pointera toujours vers ce qui est connu sous le nom de _top de stack_, qui dans votre dessin est en réalité en bas. – Jester
@Jester J'aurais dû dire que dans cette pile, il pousse de bas en haut, donc d'abord en dernier. Je lis entrer crée un cadre de pile, et quitte détruit ce cadre de pile. Je ne comprends tout simplement pas. Toute aide supplémentaire serait géniale. Merci pour votre commentaire. – tay1392
Si votre pile se développe de bas en haut, c'est encore pire bien sûr. La première chose mise sur la pile est 42, donc par cette logique qui devrait être au fond. PS: vous pouvez faire un pas du code dans un débogueur et voir ce qui se passe à chaque instruction;) – Jester