Traduire du c en asm

Signaler
Messages postés
22
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
25 juin 2008
-
Messages postés
22
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
25 juin 2008
-
bonjour a tous,

j'ai traduit un fichier c en asm grace a l'option /FAs du visual c++
j'aimerais pouvoir traduire le code ainsi pondu pas visual en un fichier lisible par masm32.
Le but et avant tout pedagogique.

j'arrive a traduire une bonne parti du code par contre je suis bloqué sur quelque elements.

_BSS SEGMENT  correspond a .DATA?
_DATA SEGMENT correspond a .DATA
CONST SEGMENT coresspond a .CONST
_TEXT SEGMENT correspond a .CODE

mais a quoi correspond :
rdata$r SEGMENT
xdata$x SEGMENT

exemple:

rdata$r SEGMENT
[mailto:??_R2exception@std@@8 ??_R2exception@std@@8] DD FLAT:??_R1A@?0A@EA@exception@std@@8
rdata$r ENDS

text$x SEGMENT
[mailto:__ehhandler$?_insert_n@?$Object@@@Z __ehhandler$?_ins]ert_n@?$Object@@@Z:
 mov eax, OFFSET [mailto:__ehfuncinfo$?_Insert_n@?$Object@@@Z __ehfuncinfo$?_Ins]ert_n@?$Object@@@Z
 jmp ___CxxFrameHandler3
text$x ENDS

Merci d'avance

 Thierry

3 réponses

Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
2
Bonjour,


Je pense que les deux segments rdata$r SEGMENT et xdata$x SEGMENT sont respectivement:
un segment de données utilisable en lecture uniquement
un segment de données utilisable en exécution uniquement.

Un segment est caractérisé par 3 caractéristiques:
- lecture
-écriture
-exécution

Un segment de code est "normalement" en Read et Execute
Un segment de données est généralement en Read et Write
d'autres combinaisons sont cependant possibles
segment de code modifiable à l'exécution (+W)
segment de données exécutable (+E)

En espérant ne pas avoir trop dit de bétises

A+
Messages postés
573
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
20 avril 2021
2
Salut,
La traduction du c++ ajoute les définitions de segment que masm ne fait pas apparaitre.Il peut y avoir plusieurs segments de données (data) et chacun porte un nom pour le différencier des autres.C'est le dessassembleur qui les nomme comme il veut,c'est tout.
Sinon voir le pecoff format pour voir si certains noms signifient quelques choses de particulier.


 Un nom commençant par ? comme [mailto:??_R1A@?0A@EA@exception@std@@8 ??_R1A@?0A@EA@exception@std@@8]
est un nom décoré par le C++ , une api permet de le traduire.UnDecorateSymbolName.

Pour ce qui est de traduire tout ça en masm,bon courage,la traduction doit rester courte.
                            toutEnMasm
Messages postés
22
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
25 juin 2008

finalement , je trouve qu(il est plus simple de repartir de zero.




Je me sert du fichier pondu par C++ pour les morceaux interressant.




Je trouve que le code pondu par le C++ n'est pas optimisé a fond






Merci a vous tous







 Thierry