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 :

Accéder à une adresse contenu dans une adresse


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Accéder à une adresse contenu dans une adresse
    Bonjour,
    Je travaille avec une matrice. C'est en fait un pointeur de pointeur.
    Pour accéder à la case (0, 1), je fais:
    (EAX contient le vecteur pointeur de pointeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MOV EDX, [EAX] ; Je met l'adresse du contenu dans le 1er élément
    MOV CL, [EDX+1] ; J'accède à la valeur contenu dans le 2è élément
    Ça marche, mais je dois le faire en 2 étapes. Comment accéder directement en 1 seule étape. La syntace [[EAX]+1] ne marche malheureusement pas.

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    SVP voir les pages 41-42 de ce document : http://www.google.tn/url?sa=t&rct=j&...46751780,d.bGE

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Pourquoi n'utilise-tu pas plutôt un tableau de taille nbLignes*nbColonnes ?

    Ainsi, tu pourrais accéder à n'importe quelle adresse de ta matrice avec un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mov   ebx, noLigne
    mov   ecx, noColonne
    lea   esi, [matrice + ebx*tailleLigne + ecx] ; rsi : pointeur sur l'élément (noLigne, noColonne)

  4. #4
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Visiblement, son tableau n'a qu'une seule dimension

    Et pour les 2 lignes de codes, je ne pense pas qu'il soit possible
    de le faire en une seule fois du genre :
    à plus

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Citation Envoyé par Forthman Voir le message
    Visiblement, son tableau n'a qu'une seule dimension

    Et pour les 2 lignes de codes, je ne pense pas qu'il soit possible
    de le faire en une seule fois du genre :
    à plus
    Je pensais à utiliser un offset fixe dans .bss pour matrice, ce qui évite le problème que tu soulèves. Sinon, effectivement, [[reg]+off] n'assemble pas.

    ++

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2013, 21h06
  2. Réponses: 4
    Dernier message: 24/08/2011, 18h23
  3. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  4. Réponses: 0
    Dernier message: 07/06/2009, 12h31
  5. Changer un caractère dans une chaîne contenue dans une phrase
    Par cirtey dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/03/2007, 16h16

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