TRADUIRE les HEADER'S FILES .h

De quoi s'agit-il ?

Pour masm,windows.inc a une taille de plus de 1 Mo et est une option minimaliste,permettant de faire beaucoup de choses et aussi de rendre les sources échangeables sans ré-exporter ces définitions.
Si on veut un langage non limité dans ces applications , l'abondance de ces définitions est un critère essentiel.La traduction n'est pas entièrement automatique,et tout n'est pas traduisible.

Critère de choix d'un assembleur plutôt qu'un autre:

Traducteurs:

Ils sont fort peu nombreux,Aucun n'est parfait,et tous demandent des corrections manuelles et des contrôles.Des corrections mineures peuvent intervenir dans le windows sdk traduit,sans pour autant faire l'objet de communications détaillés.Masm n'admet pas les redéfinitions d'un même prototype,ajout d'un fichier de ressource..Toutes corrections n'ayant aucune incidence sur le code.

Le traducteur d'EDITMASM pour sdk RC 7  juin 2009   

voir lisezmoi.doc

Windows_SDK_rc7 traduit  et prêt à l'emploi. /01/2010
Nouveauté: \sdkrc7\start_it\cpusys.exe pour régler les constantes systèmes

Télécharger le VC++ express permet d'utiliser la msvcrt.lib et la libcmt.lib avec le windows.sdk.Beaucoup (prudence) de fonctions C de ces librairies sont utilisables.Masm32 manifeste quelques incompatiblités avec ces librairies.Mettez les noms de protos de masm en commentaire et/ou réutiliser le code de la fonction renommée (dynamiquement) dans votre source.Les outils du vc++ (link,lib...) sont utilisables avec masm.

La msvcrt.lib et la libcmt.lib définissent un point d'entrée du code.Certains noms de fonctions sont incompatibles avec masm.

Guide des éventuelles corrections a faire:

Pour utiliser le traducteur lisez les précautions d'emplois ci dessus


 EXPLICATIONS

 

 

        actions de MASM lorsqu'on lui demande de pousser un byte ou un word en pile

 

        MASM réduit toujours l'action à un DWORD en pile

        

        invoke Parametre,petit ;avec ,petit BYTE  et   Parametre PROTO :BYTE

                                ------- listing ----------

        mov    al, petit

        push   eax                      

        call   Parametre

        ;-----------------------------------------

        invoke Parametre,moyen  ;moyen word     Parametre PROTO :WORD

                                ------- listing ----------

        sub    esp, 002h                ;word undefined

        push   moyen

        call   Parametre        

        ;------------------------------------------------

        invoke Parametre,moyen  ;moyen word     Parametre PROTO :DWORD

                                ------- listing ----------

        push   000h                     ;word NULL in stack

        push   moyen            ;

        call   Parametre        

        ;------------------------------------------------

        invoke Parametre,petit  ;petit byte     Parametre PROTO :DWORD

                                ------- listing ----------      

        push   000h                     ;word NULL in stack

        mov    al, petit                ;translate byte in word

        movzx  ax, al           

        push   ax                       ;=DWORD in stack        or movzx eax,al follow by push eax

        call   Parametre                

        ;----------------------------------------------------------------

 

 Guide des éventuelles corrections a faire:

 

Internal error (message de ml):

error LNK2001: unresolved external symbol

Erreur ml sur un record:

Erreur de traduction:

 

Sources écrits avec windows.inc

 

Incompatibilité de Nom avec Masm

 

Certains noms de fonctions sont incompatible avec masm.fabs en est un exemple.On peut comme le fait masm32,rebatir la librairie (certains sources sont fournis par le SDK,CRT..) au prix d'une incompatibilté de cette librairie avec les autres modules windows.La méthode la moins contraignante est d'utiliser un lien dynamique sur la fonction.L'avantage de la méthode est d'utiliser la librairie tel quel.

 

declare
Pcrt_fabs TYPEDEF PROTO C :QWORD
Fcrt_fabs TYPEDEF PTR Pcrt_fabs
crt_fabs TEXTEQU <Fcrt_fabs ptr Acrt_fabs>
.data
s db " -2309.12E-15",0
x QWORD -5.6798
y QWORD 0
;Main Main_DATA <>   
Hlibrairie dd 0
format db "fabs( %lf ) = %lf",13,10,0
Acrt_fabs dd 0
.code
main PROC C un:DWORD,deux:DWORD
   invoke LoadLibrary,SADR("ntdll.dll")
   mov Hlibrairie,eax
   invoke GetProcAddress,Hlibrairie,SADR("fabs")
   mov Acrt_fabs,eax
               ;------------------------------------------------------------------------------------
   invoke crt_fabs,x
   fstp y
   invoke printf,addr format,x,y
ret

 

 

Si vous trouver cette traduction utile et apporter des corrections aux fichiers,n'hésiter pas en m'en faire part,cela peut servir aux autres.

 

Sdk VISTA actuel et non pas la version beta

 

Quelques lignes doivent être ajoutées dans translate.inc pour que tout fonctionne normalement

Les contrôles sont les premières victimes de constantes mal définies

Adapté ces deux constantes a votre système en vous servant du sdkver.sdk et en vérifiant que vos contrôles sont visualisés normalement.Sinon,regardé la définition et les switchs qu'elle utilise.

 

 

 

VC2008 partiel

 

Vc++ 2008 non pret à l'emploi,quelques corrections seront peut être nécessaires

 

                                                        marqueur eStat'Perso