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

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : août 2018
    Messages : 7
    Points : 2
    Points
    2

    Par défaut [68000] Aide pour comprendre l'assembleur Motorola 68k

    Bonjour à tous,

    Je me suis inscrits ici afin de trouver de l'aide pour comprendre un code assembleur Motorola 68K issu d'un calculateur automobile car j'aimerais comprendre comment il "réfléchit". J'utilise IDA pro mais n'était pas du tout familier avec ce langage assembleur, j'ai beaucoup de mal à comprendre les calculs qui sont faits et l'ordre dans lequel ils sont faits.

    Y aurait-il des experts en langage assembleur Motorola 68K pour m'aider ? Ou bien quelqu'un serait-il comment je peux transformer automatiquement ce code en un langage de plus haut niveau, type langage C ou pseudo code. Mon objectif ultime serait, une fois compris le code, de le recoder en Matlab/Simulink afin de pouvoir resimuler le comportement du calculateur avec des inputs que j'aurais acquises sur mon auto

    Merci d'avance pour votre aide !

    A bientôt,
    Vincent

  2. #2
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 536
    Points : 7 701
    Points
    7 701

    Par défaut

    Alors je connais bien le M68000 , et je suis un peu étonner que tu rencontre des difficulté parce que ça reste un des assembleurs les plus facile et le plus fun a programmer :p
    Ida pro c'est vraiment si tu es a l'aise avec l'assembleur , de plus il existe des desassembleur pour le 68000 gratuit

    Pour répondre a ta question je ne connais pas d'outils qui permet de transformer un langage bas niveau en langage haut niveau automatiquement.
    Il existe par contre de nombreux programme assembleur pour le M68000 , tu peux aussi utiliser GCC (pour le M68k) pour faire du C ou C++ sur ta machine.
    Enfin le principal probleme de mon point de vue , ça sera pas de le programmer en assembleur , mais bel et bien connaître toutes les I/O , j'espere qu'il existe un doc pour pas que tu fasse un long travail de R&D.

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : août 2018
    Messages : 7
    Points : 2
    Points
    2

    Par défaut

    Merci Kannagi pour ta réponse.

    En fait, c'est la 1ère fois que je lis du code assembleur, du coup j'ai essayé de me former tout seul avec des tutos sur le net mais ce n'est pas évident.

    Pour être plus précis, j'ai récupéré le code binaire de mon calculateur que j'ai désassemblé grâce à IDA pro et la difficulté pour moi maintenant est de déchiffrer ce code assembleur afin de comprendre les règles de gestion du calculateur. Je ne souhaite pas assembler ou compiler pour le moment. J'aimerais plutôt reproduire sous Matlab/Simulink ces règles de gestion du calculateur après les avoir comprises.

    Penses-tu que GCC me permettrait de plus facilement comprendre le code désassemblé ? Si je t'envoie le binaire du code ou mon projet sous IDA pro, serais-tu me dire en un coup d'oeil le niveau de complexité de celui-ci ? J'ai peur de me lancer dans quelque chose de trop gros pour le débutant que je suis :/

    D'ailleurs je me pose la question à savoir pourquoi il existe des compiler qui traduisent automatiquement un langage C en langage assembleur M68000 mais que ce même outil ne puisse pas faire le cheminement inverse (c'est-à-dire décompiler). Connaissant l'ensemble des instructions assembleur M68000, il devrait pouvoir retrouver les instructions C duquel il est issu non ?

  4. #4
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 536
    Points : 7 701
    Points
    7 701

    Par défaut

    Bon , le gros souci , j'ai que j'ai l'impression que tu es trop pressé , lire un code désassembler et le comprendre voudrait dire que tu es déjà a l'aise avec l'assembleur (bref loin d’être un débutant).
    C'est comme si tu te disais bah Je connais pas le C ou je suis débutant et je vais essayer de comprendre le code source de Linux , je ne suis pas sur que cela soit très efficace...
    Il me semble pas que GCC désassemble un code source , c'est un compilateur c'est au cas où tu voudrais recoder le programme en C ou en C++ :p
    Vu ta dernière question , je vois que oui tu n'as jamais fait de l'assembleur , il n'existe pas une bijection entre l'assembleur et un code source écrit en C donc non ce n'est pas possible.

    Bref si tu veux mon avis , si tu as aucune connaissance de l'assembleur et du bas niveau il va être très compliqué que tu puisse comprendre le code source , parce que avant de le comprendre la première chose que je ferais ça serait de définir sa memory map sinon il serait quasi impossible de savoir ce que fait le programme, pour la connaître il faudrait avoir le PCB sous la main et de refaire les branchements sur papier pour avoir une memory map plus compréhensible (ROM/RAM/I/O ect ect) ,et ensuite de lire le code source (et de voir les adresses correspondante) , et d'en faire une déduction sur son fonctionnement.
    Le mieux c'est d'avoir une doc hein , bref tout ça me semble loin d’être évident tu te lance sur quelque chose qui n'est pas a la porté d'un débutant

  5. #5
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : août 2018
    Messages : 7
    Points : 2
    Points
    2

    Par défaut

    Comme je l'ai dis précédemment, avant de me plonger dans le code que j'ai désassemblé, j'ai commencé à m'autoformer avec des tutoriels pour comprendre ce que fait chaque instruction du langage assembleur M68000. Sur des exemples simples, j'arrive à comprendre chaque instruction mais quand tout est utilisé en même temps avec beaucoup d'imbrications de fonctions ça se complique fortement.

    J'ai déjà identifié une partie des zones mémoire qui constituent la ROM, la RAM et commencé à identifier certaines entrées/sorties mais c'est compliqué car je n'ai pas beaucoup de documentation à ce sujet. Merci pour tes conseils en tout cas.

    Nom : Screenshot.jpg
Affichages : 179
Taille : 293,1 Ko

  6. #6
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 536
    Points : 7 701
    Points
    7 701

    Par défaut

    Vu ton screenshot , c'est un vrai code spaghetti donc rien d'anormal que le code risque d’être très long et complexe a comprendre...
    Il est possible que le code a était écrit par un compilo aussi.

    Et la aussi aucune idée de ce que c'est que signifie les adresses FFC55A , FCC700 , sûrement des I/O mais a vérifier :p

    Le machin est quand même incompréhensible par bout , il met une la valeur de D0 à FFC55A (qu’elle est la valeur de D0 mystère , et vu que c'est un vrai code spaghetti).
    De même qu'il push la pile et le met dans la valeur de FCC700 , la aussi aucune idée de ce que ça fait, et saute dans un autre coin du code

    c'est compliqué car je n'ai pas beaucoup de documentation à ce sujet
    Ce n'est pas quelque chose de si rare , pas mal d'émulateur était dans la même situation que toi (principalement ceux sur l'arcade), la solution était sur 3 points , les branchements sur la PCB , le désassemblage , et l'émulation (pour voir si on a bien le même résultat que le jeux en question).
    Pour cela que je me concentrerai plus a marquer quelque part toute ces adresses , avoir une memory map complète et recoder tout cela au propre

  7. #7
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : août 2018
    Messages : 7
    Points : 2
    Points
    2

    Par défaut

    C'est bien le terme : un code spaghetti

    Le code fait que sauter d'un coin à un autre du code. Ci-dessous une petite partie des interactions entre fonctions :
    Nom : Sans titre.jpg
Affichages : 161
Taille : 246,0 Ko

    Ok je vais essayer de faire l'inventaire de toutes ces adresses dans un coin. Je ne sais pas s'il vaut mieux partir des fonctions enfants pour remonter petit à petit ou faire l'inverse.

  8. #8
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 536
    Points : 7 701
    Points
    7 701

    Par défaut

    Citation Envoyé par VincentM3E36 Voir le message
    Je ne sais pas s'il vaut mieux partir des fonctions enfants pour remonter petit à petit ou faire l'inverse.
    Tout dépend de ce que tu recherche en faite
    Même un code source en C , je m'amuse pas a le lire en entier (que les bout de code qui m'interesse).

    Si tu me dit comprendre le programme dans son entier , j'ai envie de te dire a quoi bon ?
    (Sauf si vraiment il utilise un algorithme particulier ce qui m'étonnerait)
    La le seul truc que je ferais c'est éventuellement lire les bout pour savoir comment en utilise les I/O (si il y'a des initialisation ou des utilisations particulière a faire).

  9. #9
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : août 2018
    Messages : 7
    Points : 2
    Points
    2

    Par défaut

    Effectivement il y a surtout certaines parties qui m'intéressent plus que d'autres que j'ai commencé à localiser dans le code mais j'ai un peu de mal à suivre le déroulement de l'algo car on saute en permanence d'un coin à un autre du code

Discussions similaires

  1. [Thread] aide pour comprendre un exemple
    Par maminova77 dans le forum 2D
    Réponses: 2
    Dernier message: 20/04/2006, 00h24
  2. Aide pour comprendre 2 séries d'instructions
    Par raou123 dans le forum Assembleur
    Réponses: 1
    Dernier message: 11/04/2006, 23h43
  3. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 14h22
  4. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 18h54
  5. Réponses: 4
    Dernier message: 28/07/2005, 17h22

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