Besoin d'un petit coup de main [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
8 mai 2009
-
Messages postés
3
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
8 mai 2009
-
Bonjour,
je cherche quelqu'un qui pourrait éclaircir quelques notions pour moi.

Je m'explique :
Je dois traduire un code C en assembleur, ce code est un tri de liste chainée.
Je débute en assembleur et j'ai du mal à saisir comment déclarer mes pointeurs, et les manipuler.

Mon code en C :

#include <stdio.h>
#include "tri-liste.h"

Noeud* tri_liste(Noeud* premier){

  //variables
  Noeud* triee;
  Noeud* max;
  Noeud* prec;
  Noeud* tmp;
  Noeud* precmax;

  triee=(Noeud*)NULL;
  
  while (premier!=(Noeud*)NULL) {
    max=premier;
    prec=premier;
    precmax=premier;
    tmp=premier->suiv;

    //determination du max
    while (tmp!=(Noeud*)NULL) {
      if ((tmp->val)>(max->val)) {
precmax=prec;
max=tmp;
      }
      prec=tmp;
      tmp=tmp->suiv;
    }

    //on change les pointeurs
    if (max==premier){
      premier=premier->suiv;
      max->suiv=triee;
      triee=max;
    } else {
      precmax->suiv=max->suiv;
      max->suiv=triee;
      triee=max;
    }
  }
  return triee;
}


Si besoin je mettrais le reste, pour le moment je cherche juste à manipuler mes pointeurs, et à comparer les valeurs de ce qu'ils pointent.

Merci d'avance de m'aider un peu.

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
tmp->val
ohe on n'est pas devin, si on n'a pas la definition de ta struct Noeud, on risque pas de deviner l'offset.


Présupposons que tu compiles en 32 bits:
Admettons une struct de ce genre:


typedef struct _Noeud {
  _Noeud *suiv;
  int val;
} Noeud;


disons que ESI contient l'adresse d'un Noeud:
Noeud->suiv EST en [esi]
Noeud->val est en [esi+4]

ciao...
BruNews, MVP VC++
Messages postés
3
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
8 mai 2009

petite précision, je dois faire ca en assembleur gnu, sur microproc de gamme intel (j'espere avoir posté au bon endroit)
Messages postés
3
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
8 mai 2009

c'est ce qu'il me fallait comme réponse, merci ;)

J'avais oublié la structure, elle est pas dans le même fichier.