Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » SuperH disassembler
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

SuperH disassembler

Posté le 11/07/2013 02:53

Pour mes besoin personnel, j'ai réalisé ce désassembleur qui est basé sur la documentation SH3, mais normalement compatible avec nos SH4. Je me doute que ça ne servira pas à grand monde, surtout que le SDK est tout à fait capable de faire de même (enfin, le sdk nous oblige à ce que le fichier binaire soit un addin). Cependant, ça pourra éventuellement servir pour d'autre, et autant partager ce qui est chiant à faire (en l'occurrence, le plus chiant est le switch de plus de 300 lignes qui permet de différencier les instructions ).

Utilisation
Pour l'utiliser, prenez votre fichier binaire et glissez le sur l'exécutable, normalement il devrait vous sortir un fichier output.txt qui contient 3 colonnes :
- La première est l'offset en hexadécimal (numéro de l'octet si vous préférez)
- La seconde est le contenu en hexadécimal (ce contenu fait toujours deux octets)
- La troisième contient la "traduction" en assembleur si elle existe. Notez qu'une traduction peut très bien être disponible alors que les deux octets ne sont que des données. (Il est impossible de différencier une simple donnée d'une instruction, car la seule différence qui les sépare est que l'une va être interprétée par l'ordinateur et pas l'autre car il ne passera jamais dessus)
Un autre moyen d'ouvrir le logiciel est de passer par une ligne de commande :
SHdisassembler.exe "adresse du fichier que vous ouvrez.bin" "adresse du ficher de sortie.txt"

Sachant qu'une instruction fait 2 octets, si vous décalez le fichier en entier d'un seul octet, vous n'obtiendrez pas du tout le même résultat. Pensez-y, ça pourrait être une source d'erreur


Quelques infos pour les curieux et/ou non-initiés :P

- un désassembleur est un logiciel qui va prendre le code d'un fichier binaire (ici, nos g1a), et qui le "transformer" en langage assembleur (qui est un langage pas très compréhensible, mais toujours plus compréhensible que du binaire ).
- Si vous ouvrez un g1a avec, il faudra commencer à lire à partir de la ligne 0x200, car c'est à cet offset que commence la partie binaire d'un g1a, ce qui est avant n'est que l'entête.
- En assembleur sh3, chaque instruction fait 2 octets, voilà pourquoi l'offset compte de 2 en 2, car j'indique le numéro de l'octet.

Je mets les sources avec, mais elles ne sont pas très belles, car j'ai baladé le code plusieurs fois entre le "standard" et la librairie Qt (ce code me sert sur un autre projet : un début d'émulateur que je ne finirais sans doute jamais).

Changelog
v1.00 (11/07/2013) :Version originale
v1.01 (03/08/2013) :
- Correction de nombeux bugs mineurs, oublis d'instructions
- Suppression de toutes les instructions non compatible avec nos calculatrices
- Ajout de l’adresse de destination en commentaire sur le coté droit c'est possible (par exemple pour mov.l @(h'4,pc),r1 , j'affiche l'adresse qui correspond à @(h'4,pc)
- Affichage de certaines valeurs sous forme negative lorsque c'est plus pratique


Fichier joint


Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 19/06/2014 08:09 | #


Moi de même j'veux bien te filer un coup de main, je serais intéressé par développer un émulateur.
Maliafo Hors ligne Membre Points: 236 Défis: 27 Message

Citer : Posté le 19/06/2014 22:10 | #


Changelog
v1.00 (11/07/2013) :Version originale


Bientôt un an et personne n'avait remarqué ?
Comment recouvrir la Terre avec du cuir ?
Avec la semelle de nos chaussures, on en fait autant
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 19/06/2014 22:20 | #


De quoi tu parles ?

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 112 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd