Traduire du c en asm

VBFRANCE Messages postés 22 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 25 juin 2008 - 31 août 2006 à 16:52
VBFRANCE Messages postés 22 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 25 juin 2008 - 16 sept. 2006 à 17:28
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

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
31 août 2006 à 17:18
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+
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
1 sept. 2006 à 16:30
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
0
VBFRANCE Messages postés 22 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 25 juin 2008
16 sept. 2006 à 17:28
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
0
Rejoignez-nous