begin process at 2012 05 30 10:46:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

[Projet]Désassembleur


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

[Projet]Désassembleur

jeudi 6 janvier 2005 à 14:40:46 | [Projet]Désassembleur

cougardarksoul

Bonjour à tous !

Voilà : je suis en projet d'info visual C++ Windows (nous utilisons .NET 2003), et je dois programmer un désassembleur de 8051. Pour ça, je dois gérer l'ouverture d'un fichier .hex, le lire et retourner les mnémoniques associés à chaque chaîne hexa que l'on peut trouver, et pour finir, enregistrer un fichier contenant le désassemblge.

J'ai déjà la partie d'ouverture du fichier .hex, et là je voudrais l'afficher. J'ai utilisé les flux, puis je me suis servi de la fonction OnOpenDocument (l'utilisateur charge le fichier avec la commande "fichier->ouvrir".
Mon problème se situe à l'affichage : j'essaie d'afficher de façon à ce que le programme revienne à la ligne à chaque fois qu'il trouve deux points ":" (qui indique le début de ma chaîne hexa).
Je voudrais donc ceci :

:10081900E4FDFCC3ED9FEE6480F8EC64809850071A
:070829000DBD00010C80EC85
:0108300022A5

Mais je n'arrive pas à programmer la boucle dans le OnDraw de la vue, afin de faire ça correctement. J'utilise un TextOut, mais je ne parviens pas à incrémenter la position y avant chaque ":" rencontré.

Si quelqu'un a une idée, je l'en serai très reconnaissant

CougarDarkSoul
Débutant Visual C++

jeudi 6 janvier 2005 à 23:27:48 | Re : [Projet]Désassembleur

vdust

Salut !

Si je comprends bien, le contenu de ton fichier .hex est sotcké dans une chaîne de caractère (de toute façon, si ce n'est pas le cas, tu peux faire en sorte :)
Il suffit donc de jouer avec les pointeurs de chaînes : Je suppose que la chaîne sz_hex est définie et contient les données à afficher, et se termine par un caractère null. Tu peux alors définir un autre pointeur, qui va "avancer" le long de la chaîne et un entier qui contiendra la position depuis les derniers deux points, et qui reviendra à 0 lorsqu'il rencontrera à nouveau les deux points.

char* sz_points_pos = sz_hex;
int pos_cur = 0;

il suffit maintenant de faire une boucle while, jusqu'à la fin de la chaîne (caractère null)

while(sz_points_pos[pos_cur]!=NULL)
{
if(sz_points_pos[pos_cur+1]==':' ||
   sz_points_pos[
pos_cur+1]==NULL)
{   //':' suivants trouvés ou fin de chaîne

if(pos_cur!= 0)   //affichage de la chaîne si pas vide
                    //(hors deux points)
{
//ICI : définition du hdc si pas déjà fait,
//modification de pos_x et pos_y pour la nouvelle ligne

TextOut(hdc,
        pos_x, pos_y,
        sz_points_pos,
       
pos_cur+1
);
}

//déplace le pointeur à la position des deux points suivants
sz_points_pos = &sz_points_pos[pos_cur+1];
pos_cur = 0;   //nouvelle chaîne
} else {
    //sinon, incrémente la longueur de la séquence
   
pos_cur++;
}
}

Cette boucle doit fonctionner, mais probablement peut-elle être optimisée en utilisant les fonctions de manipulations de chaînes contenues dans le header string.h (fonctions de recherche de caractère, etc.) : c'est juste pour donner un points de départ fonctionnel (et puis j'ai la flemme de regarder la doc - et je vais pas tout faire à ta place non plus :)

bye

-- Virtual Dust --

vendredi 7 janvier 2005 à 13:47:33 | Re : [Projet]Désassembleur

cougardarksoul

C'est bon j'ai réussi. Merci pour ton aide vdust !

J'ai un autre problèeme maintenant :D
En fait, je dois faire une vérification du CRC pour chaque ligne d'hexa, afin de voir si le fichier n'est pas corrompu. Je cherche, d'une part, à lire les caractères à la suite d'un ":" sur une ligne, et d'autre part, à les convertir 2 par 2 en nombres hexadécimaux...
Et là je peine !!! J'implore votre aide à nouveau !!! ;)

CougarDarkSoul
Débutant Visual C++


Cette discussion est classée dans : fichier, visual, projet, programmer, désassembleur


Répondre à ce message

Sujets en rapport avec ce message

Visual C++.NET 2003 Fichier d'aide d'un projet [ par AGLRA ] Bonjour,C'est ma première appli avec Visaul C++.NET 2003 et MFC.A la création du projet avec l'assistant Application MFC je n'ai pas créé les IDde com taille du fichier en release [ par SnOOpss ] Bonjour tout le monde je programme avec visual c++ 6 et un de mes projet une dll faisait 80 ko en mode release a la suite d erreur bizarre j'ai été su Fornmat fichier non reconnu [ par gamilaze26 ] Bonjour, Bonjour, Je veux compiler un projet en visual c++ et je dispose de visual c++ 2008 et ce projet a une extension .sln,et quand je le compile Problème de compilation sous visual studio 2008 [ par chakiraziza ] Bonjour, Voici mon problème, j'ai un projet (Visual studio 2008) qui fonctionnait il y a quelque mois et j'ai voulu le retester ajd. Malheureusement Problème de projet Visual C++ 2008 qui marche pas mais marche quand même ?!? [ par DamienR83 ] Bonjour Je travail sous Microsoft Visual C++ 2008 Express Edition, et j'ai un problème un peu bizarre: Lorsque je lance la compilation (en mode deb Générer un fichier dsp à partir du visual 2005 [ par dorras7 ] Salut, Je suis entrain de développer sous visual 2005 c++ et je veux savoir comment générer un fichier DSP (pour le lire avec visual 6.0) à partir du générer fichier dsp à partir du visual 2005 [ par dorras7 ] Salut, je suis entrain de développer sous visual c++ 2005 je veux générer le fichier dsp pour le lire sous visual c++ 6.0 Merci de m'aider probleme d'executer un programme en visual studio c ++ [ par sousoi ] bonjour, j'ai telecherger un projet visaul et j'essais de compiler ou executer ce projet mais malheureusement ce projet ne contient pas le fichier .ds Problème conversion projet VC++6 vers VC++2010 [ par Hyspace ] Bonjour, Je débute en c++ et j'ai installé visual c++ 2010 express. Sur le site j'ai téléchargé deux projets intéressants fait sous vc++6 que j'aimer [BAR]propostion de participation à un projet informatique (C, C++, Visual Basic) [ par tijaune ] Bonjour, je serais partant pour m'intégrer sur mon temps de loisir dans une équipe sur un projet informatique concret (cryptographie, jeu, modélisati


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,359 sec (3)

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