IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

État de la mémoire après exécution d'un POP


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut État de la mémoire après exécution d'un POP
    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.

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    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.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par Eric2a Voir le message
    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.
    Oui mais ce n'est pas obligatoire et c'est de toute façon l'objet de l'instruction suivante.

    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.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    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

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par nayssa78 Voir le message
    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
    Assure-toi dans un premier temps que « l'ex-sommet » se trouve bien à l'endroit que tu penses.

    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.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    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++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mémoire après exécution du programme
    Par Woufeil dans le forum C++
    Réponses: 14
    Dernier message: 23/08/2006, 02h33
  2. Réponses: 21
    Dernier message: 21/07/2006, 17h55
  3. Vider la mémoire après utilisation d'une feuille excel
    Par snooopy007 dans le forum Access
    Réponses: 15
    Dernier message: 19/07/2006, 21h11
  4. libération de la mémoire après traitement ?
    Par isachat666 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/12/2005, 20h29
  5. Réponses: 4
    Dernier message: 16/09/2005, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo