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 :

Lecture d'une donnee a une addresse


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Par défaut Lecture d'une donnee a une addresse
    Bonjour,

    J'aimerais lire une donnee a une addresse specifique. J'utilise le code suivant:
    measurment(first_address)= $0x0012FDBC;

    cela ne fonctionne pas, d'ou pourrais venir le probleme ?

    Merci par avance

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    C'est interdit dans un OS 32 bits (ou 64 bits) à cause de la protection mémoire mise en place pour séparer les espaces mémoire des processus qui tournent en parallèle.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par mansgueg Voir le message
    Bonjour,

    J'aimerais lire une donnee a une addresse specifique. J'utilise le code suivant:
    measurment(first_address)= $0x0012FDBC;

    cela ne fonctionne pas, d'ou pourrais venir le probleme ?

    Merci par avance
    Outre que le problème tel que tu le poses est mal posé, le code que tu montres ne ressemble pas à du C++.

    Si tu parles d'un adresse logique, c'est possible (faire un reinterpret_cast d'un entier vers un pointeur devrait faire quelque chose de logique pour qui connait l'architecture cible). Mais je n'en vois pas l'utilité (sauf si tu peux demander que l'OS place dans ton espace logique des choses particulière).

    Si tu parles d'adresse physique: comme dit par Emmanuel, c'est généralement interdit par l'OS.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Peut être que ce n'est pas du code pour un OS 32 ou 64 bits mais du code pour de l'embarqué. Auquel cas, il est parfois obligatoire de lire à un emplacement mémoire physique bien déterminé.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Par défaut
    Voici mon programme entier, en gros, je souhaiterais créer un fichier de donnée (1 donnée par ligne) à partir de donnée contenu dans des adresses physique en connaissant l'adresse de départ, le pas d'enregistrement des donnée (c'est à dire les adresses suivant ou sont contenu les données) et le nombre de donnée.

    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
    23
    24
    25
    using namespace std;
    int main () 
    {
          int first_address=0;        // first address 
          int step=1;                         // address step
          int number_of_data=10;        // number of total data
          int * measurment;
          measurment= new int [10];         // creating aray for the matrix, specifie the number of data
          int i;                                    // loop variable
     
          for(i=first_address;i<number_of_data+1;i=i+step)
          {
                measurment[i-first_address+1]= //Lecture contenu addresse physique; //
          }
     
     ofstream myfile;
      myfile.open ("measurment.txt");
     
      for(i= 0; i < number_of_data+1; i++)
      {
            myfile << ("%d ", measurment[i]);
            myfile << ("\n");
      }
      myfile.close();
    }
    Connaissez vous des fonctions ou méthode pour accéder au contenu de ces adresses physiques ? c'est possible à mon avis , Merci infiniment

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    C'est possible, certainement, mais si tu ne nous dis pas dans quel contexte tu travailles, ça va quand même être compliqué de répondre à la question
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par mansgueg Voir le message
    de donnée contenu dans des addresses physique en connaissant l'addresse
    Deux cas: tu travailles avec un processeur qui dispose d'une MMU et celle-ci est activee. Il te faut la collaboration de l'OS pour faire en sorte que tes adresses physiques correspondent a des adresses logiques que tu connais. Dans les autres cas, les adresses logiques et physiques sont les memes.

    Tu fais alors un reinterpret_cast pour transformer l'entier representant l'adresse en un pointeur vers le type que tu desires et tu dereferences ce pointeur pour lire ou ecrire a cette adresse.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Par défaut
    Je suis très novice en programmation, j'ai réussi à écrire mon programme, voici la ligne pour la lecture du contenu d'une adresse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i=first_address;i<number_of_data+1;i=i+step)
          {
           		  measurment[j]= *(reinterpret_cast<int*>(address_matrix[j]));
    		  j=j+1;
          }
    Je transfert dans la matrice measurment[j] la valeur lu à l'adresse contenu dans address_matrix[j]. Cependant j'ai un message d'erreur du type :

    Exception non gérée à 0x00dd1cbd dans data_management.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x0000000a.

    Comme vous le dite, il se peut qu'il soit interdit de lire dans ces addresses. Existe t-il un software pour autoriser l'accès à ces adresses ?

  9. #9
    screetch
    Invité(e)
    Par défaut
    qu'est-ce qu'il y a a cette adresse?
    (EDIT) en d'autres termes, elel vient d'où?

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. [AC-2000] Renvoyer automatiquement une donnee d'une table dans une autre
    Par Nathalie PG dans le forum IHM
    Réponses: 2
    Dernier message: 10/02/2010, 13h43
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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