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

x86 32-bits / 64-bits Assembleur Discussion :

incomprehension de quelques lignes d'assembleur dans du code C


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 18
    Points
    18
    Par défaut incomprehension de quelques lignes d'assembleur dans du code C
    Bonjour,
    voila je suis face à une petite incomprehension, je vous montre le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void retour()
    {
    int b;
    asm ("movl %0, %%esp" : :"r"(main_esp):"esp");
    asm ("movl %0, %%ebp" : :"r"(main_ebp));
    }
    c'est en faite une fonction qui me permet de restaurer un autre contexte sauvegardé dans les deux variable (main_esp et main_ebp).
    ce bout de code marche trés bien et fait ce que j'attend de lui, mais le probleme est que je suis dans l'obligation de rajouter la variable local "int b" qui sert à rien du tout dans la fonction. parceque on enlevant cette variable j'ai une erreur de segmentation.
    je ne comprend rien du tout du changement apporté par cette variable local; je suis assez debutant dans l'utilisation de l'assembleur; donc un eclaircissement serait vraiment le bienvenus.
    PS : pour info la fonction "retour()" est appellée par la primitive signal() lors de la capture d'un signal.
    voila Merci beaucoup.

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 193
    Points : 277
    Points
    277
    Par défaut
    je ne comprend rien du tout du changement apporté par cette variable local;
    Bien que je ne connaisse pas cet assembleur , la variable inutilisé prend de la place,décale les adresses.N'y aurait-il pas un problème d'alignement ?
    Masm utilise align ou ZPn dans la ligne de commande.

Discussions similaires

  1. Un regex qui fonctionne sur les testeurs en ligne, mais pas dans mon code
    Par billybobbonnet dans le forum Développement Windows
    Réponses: 4
    Dernier message: 28/01/2015, 17h20
  2. Réponses: 1
    Dernier message: 04/06/2012, 22h19
  3. Mettre de l'assembleur dans un code c++
    Par uriotcea dans le forum Débuter
    Réponses: 8
    Dernier message: 10/03/2012, 13h39
  4. Réponses: 5
    Dernier message: 25/11/2011, 15h37
  5. Intégration d'un code Assembleur dans un code en C
    Par ifdo7a dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/12/2010, 13h15

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