|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() nayssa Enseignant Inscription : février 2012 Messages : 9 ![]() |
Salut à tous,
Mon problème est le suivant : que trouve-t-on dans la mémoire a la place d'un mot dépilé, c'est-à-dire après exécution d'un POP ? Le mot est-il remis a zéro ou bien le mot ne subit aucun changement, seul SP sera modifié ? Merci beaucoup. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Eric GaridacciInscription : septembre 2005 Messages : 1 094 ![]() |
Salut,
Une fois le contenu de la mémoire d'adresse SS:SP est chargé dans la destination, le registre SP est incrémenté de 2 (ou de 4 pour les valeurs sur 32 bits). Quand au contenu de la mémoire d'adresse SS:SP, sa valeur est indéfinie car une interruption materielle peut être enclenchée juste après l'opération de dépilage. |
|
|
10
|
|
|
#3 | |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 639 ![]() |
Citation:
Donc, la bonne réponse est bien la deuxième option : la zone mémoire initialement pointée par SS:SP, après dépilage, reste en l'état jusqu'à ce que quelque chose d'autre viennent explicitement modifier cette zone. |
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() nayssa Enseignant Inscription : février 2012 Messages : 9 ![]() |
merci pour vos interventions ,mais lorsque je fais des tests avec l'outil DEBUG ;
j'execute par exemple la séquence suivante push ax push bx pop ax après le pop je trouve dans l'ex sommet de pile une valeur quelconque cad différente de la valeur depilée ; je ne trouve pas d'explication j'ai besoin d'eclairage a ce sujet |
|
|
00
|
|
|
#5 | |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 639 ![]() |
Citation:
Ensuite, comme dit plus haut, la pile est utilisée par le micro-processeur lui-même pour ses travaux de gestion. Donc, même en fonctionnant en pas à pas avec le débogueur, si ton micro-processeur n'est pas explicitement doté de registres spéciaux de déboguage ou si ton débogueur ne les utilise pas (probable en mode 16 bits), alors ton outil va utiliser une interruption logicielle pour préempter ton programme. Celle-ci va obligatoirement impliquer de la part du micro-processeur une sauvegarde automatique du contexte dans la pile, et l'ancien contenu sera donc écrasé avant que tu aies eu le temps de le lire. Si tu veux quand même vérifier que c'est vrai, il faut désactiver les interruptions avec CLI (on suppose que tu tournes dans un mode réel ou émulé comme tel) et faire en sorte que ce soit ton programme lui-même qui aille récupérer la valeur au bon endroit et qui la compare avec ce qu'il vient de dépiler. |
|
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() nayssa Enseignant Inscription : février 2012 Messages : 9 ![]() |
Salut
En utilisant l'instruction cli ,je retrouve dans l'ancien sommet de pile la bonne valeur ; pour récapituler aprés exécution d'un pop la valeur dépilée est toujours en mémoire elle sera ecrasée par un éventuel PUSH , que signifie preempter? merci beaucoup A++ |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com