Etripator (désassembleur PCE)

Le coin des demomakers et des programmeurs en herbe.

Modérateurs : SirG, Redfield1, shubibiman, Laucops

Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Message par MooZ »

Et voici la nouvelle version !
Je ne l'ai pas encore compilée sous windows. Mais ça devrait se faire tout seul avec Code::Blocks ou Dev C++. Essayez d'utiliser gcc. Je ne sais pas si ça compilera avec visual :/

Comment ça marche?
Eh bien, c'est fort simple. Vous faites un fichier csv (il peut être vide), de la forme:

Code : Tout sélectionner

code;nom;offset de départ;offset de fin
data;nom donnée;offset de départ;offset de fin
Et vous lancez:

Code : Tout sélectionner

etripator fichier.csv rom.pce
Si l'offset de fin est inférieur à  0, ce dernier sera calculé dans le cas d'un section de code (c'est à  dire qu'on s'arretera dès qu'on trouvera une instruction du type RTI ou RTS). Dans le cas d'une section de donée, l'offset de fin sera égal à  la fin de la rom.

Si vous mettez autre chose que "code" comme premier élément, la section sera considérée comme contenant des données. Attention aux majuscules! Les sections de données sont dumpées au format binaire.

Toutes les sections sont écrites dans des fichiers dont le nom est égal aux 2ème élement de l'entrée CSV.

Les intéruptions sont automatiquement désassemblées et stockées dans les fichiers;
* irq_1
* irq_2
* irq_nmi
* irq_reset
* irq_timer

Vous devez normalement trouver dans le répertoire 2 fichiers de tests (dda.pce et dda.csv). dda.csv contient la description des sections de données contenant le sample joué. Ces derniers seront ecrits dans les fichiers sample.aa, sample.ab et sample.ac .

Voila!

J'espère que ca vous sera utile.
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Message par MooZ »

Voici la version windows (le répertoire contient aussi le projet pour dev c++) !

Ca a été un peu plus compliqué que prévu vu que mingw32 ne possède pas mmap ni strndup :/

J'ai tésté rapidement avec la rom dda.pce et aero blaster. Ca marche plutot bien sauf que les developpeurs de l'époque s'amusaient à  inclure des données en plein milieu du code.
Ainsi dans l'irq1 d'aero blaster, on a à  un moment:

Code : Tout sélectionner

jmp hhll,X 
Suivi d'instructions sans queue ni tête. En fait les octets suivants correspondent à  une table contenant les addresses vers lesquels sauter.
A moins de coder un mini émulateur pour analyser le code, l'utilisateur devra faire un peu de lecture et modifier le csv pour sauter ces tables.
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Message par MooZ »

Et hop, un README en anglais !
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Message par MooZ »

Enfin une mise à  jour! Ca mérite bien que je déterre ce topic :)

J'ai rajouté une option (-m ou --mkit) permettant de sortir le code dans un format compatible avec magic engine (pceas). Les sections de code ont cette tête:

Code : Tout sélectionner

        .code
        .bank 0         ;FIXME
        .org $0000      ;FIXME
  sei
  csh
  ; etc...
et pour les données :

Code : Tout sélectionner

        .data
        .bank 0         ;FIXME
        .org $0000      ;FIXME
  .db $00, $00, $00, $00, $00, $00, $00, $00
L'utilisateur devra corriger les valeurs des directives .bank et .org lui même. Cela pourrait être fait automatiquement pour les vecteurs d'interruption.
De même les arguments des instructions de type BBRi, BBSi, BCC, BCS, BEQ, BMI, BNE, BPL, BRA, BSR, BVC, BVS doivent étre elles aussi corrigées à  la main.
J'essaierai de fixer tout ça dans la prochaine version (dans 1 an donc :) )

readme en engrish
les sources
exe win32

... Et j'ai oublié de modifier l'affichage pour l'addressage indirecte et les addresses dans la zero page (c'est toujours la syntaxe de wla-dx).
Les sources à  jour sont là .
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Message par MooZ »

Tadam!

Encore une release. Je pense que cette fois ce sera plus utilisable.
Il y a eu un paquet de changements. Déjà  les labels sont détectés automatiquement. On n'aura plus:

Code : Tout sélectionner

        nop
        bra  $e010
mais

Code : Tout sélectionner

l_e010: nop
        bra  l_e010
Ca n'a pas l'air mais avec cette feature j'ai reussi à  desassembler/recompiler une de mes roms :)

Sinon le format du csv a changé, on a maintenant:

Code : Tout sélectionner

type;nom;bank;org;start;size
* type est le type de la section. Il y a 3 types de sections : code, inc_data, bin_data. Pour inc_data les données seront écrites sous la forme d'un fichier assembleur. Quand à  bin_data, ce seront juste les données en binaire.
* nom nom du fichier dans lequel seront ecrites les données extraites.
* bank banque de la secion (.bank)
* org addresse et page de la section (.org)
* start début de la section dans le fichier (Attention! Pour les hucards c'est l'offset dans le fichier sans le header (la taille du header est calculée automatiquement)
* size taille de la section.

Il y a aussi une nouvelle option de ligne de commande -o (ou --out) permettant de specifier le fichier assembleur regroupant l'ensemble des infos générées.

Pour plus d'infos je vous encourage à  consulter le ReadMe

sources
exe win32

N'hésitez à  me remonter le bugs. Je n'ai pas encore eu le temps de tester avec des images cd.
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Etripator

Message par MooZ »

Si ça c'est pas de l'exhumation de sujet :)

Je viens de bouger les sources sur github: https://github.com/BlockoS/Etripator
Il y a eu pas mal de changements et de corrections. Le plus important est qu'on peut maintenant utiliser des fichiers au format INI/CFG. Le CSV est encore supporté via l'option --csv. La génération des labels a été modifiée pour pouvoir supporté du code réparti sur plusieurs banks.
J'ai mis un exe à dispo [ici]
La prochaine étape va consister en un grand nettoyage de printemps. Il y a pas mal de trucs crades dans le code. Et je vais voir pour élargir le support à d'autres machines/assembleurs.

Si il y a des coders qui veulent filer un coup de main, ils sont les bienvenus.
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Etripator

Message par touko »

Eh ca m'a l'air d'être devenu utilisable pour les profanes (comme moi) ton utilitaire ..

Va falloir que je teste ca ..
Dernière modification par touko le jeu. 21 avr. 2011 21:12, modifié 1 fois.
Avatar de l’utilisateur
peperocket
NECrophage
Messages : 1555
Inscription : lun. 23 mai 2005 00:17
Localisation : Dans mes charentaises

Re: Etripator

Message par peperocket »

Cool, merci beaucoup mooz pour cet utilitaire indispensable. M'en vais tester ça moi ...
Vive la Supergrafx !!!
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Etripator

Message par MooZ »

Et hop, la version 0.3 est sortie.
Vous pouvez récupérer le code source ici.
Je fournirai les exécutables pour windows demain.

Edit: Je viens de mettre à jour l'exécutable pour Windows: etripator.exe
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Etripator

Message par MooZ »

Image
Une nouvelle version devrait arriver d'ici quelques semaines avec:
  • Support des "adresses miroirs".
  • Meilleur support pour les CDs.
  • Possibilité de prédéfinir des noms pour certaines adresses (utile pour les appels BIOS).
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Etripator

Message par touko »

Excellent, mais je suis trop mauvais pour arriver à l'utiliser .. :?
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Etripator

Message par MooZ »

T'inquiète. Je compte rajouter de la doc avec des exemples à foison.
Avatar de l’utilisateur
Kaminari
Modérateur
Messages : 7049
Inscription : ven. 24 sept. 2004 19:36
Contact :

Re: Etripator

Message par Kaminari »

J'avais branché mon beauf Eddy dessus, et ça l'intéresse beaucoup dans le cadre de son devkit/assembleur PEA.
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Etripator

Message par MooZ »

J'ai tout mis sur github : https://github.com/BlockoS/Etripator
Par contre j'ai merdé, je bosse sur le master (et pas en branche). Il est donc un peu pété en ce moment.
Ca devrait être remis d'équerre ce week-end.

Pour résumé, ça ne compile pas :D
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Etripator

Message par touko »

MooZ a écrit :T'inquiète. Je compte rajouter de la doc avec des exemples à foison.
Ca serrait sympa :wink:
Répondre