2009-09-25 15 views
0

Je suis en train de convertir cette fonction de MSVC++ à MINGW (ce qui est la fonction MSVC originale)Convert Inline C Assembleur (Intel syntaxe AT & T)

VOID __declspec(naked) BNSTUB() 
{ 
    __asm 
    { 
     pushad; 
     call OnChatPacketReceived; 
     TEST EAX,EAX; 

     popad; 
     jnz oldCall; 

     MOV EAX,0; 
     MOV DWORD PTR DS:[EBX+0x6FF3EBA0],1 
     ret; 
oldCall: 
     CALL eax; 
     MOV DWORD PTR DS:[EBX+0x6FF3EBA0],1 
     ret; 

    } 
} 

Mais j'ai des problèmes avec pushad et popad. ils me donnent un "identifiant non déclaré"

Répondre

0

Dans Mingw, il pourrait être appelé "pushall" au lieu de "pusha": alors essayez "pushalld" et "popalld".

+0

En fait, il est pushal et Popal (sans le supplément 'l') –

0

Vous pouvez compiler quelque chose en C et également conserver la liste de l'assembleur avec le paramètre -S. Cela devrait afficher la syntaxe AT & T dans toute sa gloire.

+0

Le code qui les émet du compilateur comprendront pas nécessairement une instance du bouton-tout- registres opcode, cependant. – ChrisW

2

pusha Popa (sans d)

+0

Ne sont pas seulement les versions 16 bits (mot)? –