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 16-bits Assembleur Discussion :

SWAP avec passage d'adresse


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut SWAP avec passage d'adresse
    Bonjour,

    j'aimerai réaliser en ASM la fonction sw intervertissant deux données d'un tableau dont les adresses des deux données sont fournies en paramètre via les registre r0 (val1) et r1 (val2)

    en gros le prototype de la fonction C serait sw(int *val1, int val*2)

    par contre je viens d'essayer en C ... et je ne sais pas si c'est moi mais ce que j'ai fais ne fonctionne pas :

    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
    #include <stdio.h>
     
    void sw(int * a, int *b)
    {   
            int tmp ;
     
            tmp = *a ; 
            *a = *b;
            *b = tmp ; 
    }
     
    int main()
    {   
            int a = 5 ;
            int b = 15 ;
            sw(&a,&b) ;
            printf("a=%d b=%d\n",a,b) ;
     
     
    }
    cela m'affiche :
    a=5 b=5

    en asm celà donnerait quelque chose du genre :
    sw
    LDR R3, [R0]
    LDR R0, [R1]
    MOV R1, R3

    est-ce correct ?

  2. #2
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    erf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mov rax,[r1]
    mov rbx,[r0]
    mov [r0],rax
    mov [r1],rbx
    voilà ce qui est correct pour faire un swap de deux cases memoires.
    a moins qu'il existe une instruction en 64bits du genre swap...comme en x86-32

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/08/2010, 14h58
  2. executer un fichier perl avec passage de parametre
    Par mpolodesm dans le forum Langage
    Réponses: 3
    Dernier message: 09/11/2005, 14h14
  3. [CR] fonction avec passage de parametres
    Par HULK dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 13/09/2005, 12h07
  4. Réponses: 6
    Dernier message: 26/07/2005, 10h20
  5. [Debutant(e)]passage par adresse?
    Par cap2fosse dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2004, 10h05

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