begin process at 2012 05 25 05:29:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Processeurs

 > 

X86

 > 

Besoin d'un petit coup de main


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Besoin d'un petit coup de main

jeudi 7 mai 2009 à 16:45:00 | Besoin d'un petit coup de main

Toutouillee

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 :

[code]#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;
}[/code]

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.
jeudi 7 mai 2009 à 16:51:43 | Re : Besoin d'un petit coup de main

Toutouillee

petite précision, je dois faire ca en assembleur gnu, sur microproc de gamme intel (j'espere avoir posté au bon endroit)
jeudi 7 mai 2009 à 21:54:53 | Re : Besoin d'un petit coup de main

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

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++

vendredi 8 mai 2009 à 01:11:04 | Re : Besoin d'un petit coup de main

Toutouillee

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

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


Cette discussion est classée dans : max, premier, noeud, tmp, triee


Répondre à ce message

Sujets en rapport avec ce message

program C vers Mips [ par dilyar1984 ] jai un programe en langage C et je doit traduire en langage Mips: nombre premier en nasm [ par YAWLY ] MED.MERZOUG salut tout le monde vous pouvez m'aider si j le compile sa affiche chaque fois le nbr est non premeir > le code est : Section .date ch turbo assembleur 5.0 [ par andromida ] S.V.P aidez moi a écrire un code tasm qui fait: *saisir 20 [b]entiers[/b] comme etant des ages dans un tableau *determiner en un seul parcou [Débutant] Problème difficile, merci d'y jeter u coup d'oeil ;) [ par lil_meh10 ] j'essai d'ecrire un programme en langage assembleur permettant de détecter la position du premier bit à '1' d'un mot de 32 bits (status) en balayant d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales