Besoin d'un petit coup de main

Résolu
cs_Toutouillee Messages postés 3 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 8 mai 2009 - 7 mai 2009 à 16:45
cs_Toutouillee Messages postés 3 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 8 mai 2009 - 8 mai 2009 à 01:11
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 mai 2009 à 21:54
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++
3
cs_Toutouillee Messages postés 3 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 8 mai 2009
7 mai 2009 à 16:51
petite précision, je dois faire ca en assembleur gnu, sur microproc de gamme intel (j'espere avoir posté au bon endroit)
0
cs_Toutouillee Messages postés 3 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 8 mai 2009
8 mai 2009 à 01:11
c'est ce qu'il me fallait comme réponse, merci ;)

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