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

C Discussion :

Afficher l'état des registres processeur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut Afficher l'état des registres processeur
    Bonjour,

    Existe t-il un moyen "simple" en C pour afficher la valeur de tous les registres
    du processeur (ax, bx, etc...).

    Merci
    Sorry

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Salut,

    En fait faut que tu donnes un peu le contexte...
    Sur quel OS et quel famille de processeur ? pour quoi faire, etc....

    Molox

  3. #3
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par molox Voir le message
    Salut,

    En fait faut que tu donnes un peu le contexte...
    Sur quel OS et quel famille de processeur ? pour quoi faire, etc....

    Molox
    Oui pardon.

    Sous linux 2.6 avec un proc intel x86 classique.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Si c'est sous Linux 2.6, c'est forcément de l'assembleur Intel 32 bits, donc EAX, EBX, etc.

    Le plus simple consiste à écrire une ligne d'assembleur inline dans une fonction pour transférer le contenu d'un registre dans EAX. Tu pourras alors le retourner en tant que valeur de retour de ta fonction.

    Pour tout récupérer d'un coup, le mieux, à mon avis, est un PUSHA dans la pile et un recopie octet par octet dans un buffer passé en argument.

    Je suggère de bouger ce fil dans le forum Assembleur x86 32 et 64 bits.

  5. #5
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Rien de direct en C. Ok merci je vais me depatouiller en asm.

    A+

  6. #6
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Voilà je poste mon code (pas encore vérifié), si ça interesse quelqu'un...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <stdio.h>
     
    int print_eax(){
      __asm__("mov %eax, %eax;"
        );
    }
    int print_ebx(){
      __asm__("mov %ebx, %eax;"
        );
    }
    int print_ecx(){
      __asm__("mov %ecx, %eax;"
        );
    }
     
    int main(){
      printf("EAX : 0x%x\n",print_eax());
      printf("EBX : 0x%x\n",print_ebx());
      printf("ECX : 0x%x\n",print_ecx());
      return 0;
    }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2013, 15h10
  2. Réponses: 4
    Dernier message: 03/02/2008, 05h50
  3. Fenetre qui affiche l'état des variables
    Par Irken dans le forum Windows
    Réponses: 1
    Dernier message: 30/01/2008, 07h51
  4. [DOS] Afficher l'état des leds : Scroll, num, cap
    Par Dayssam dans le forum Contribuez
    Réponses: 0
    Dernier message: 14/01/2008, 15h33
  5. afficher le contenu des registres
    Par meftahie dans le forum C
    Réponses: 5
    Dernier message: 09/12/2007, 16h29

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