2010-09-13 6 views
0
__asm 
{ 
    mov bl, byte [0x0068F51C] 
    call 0x004523C0 
} 

Ce code donne cette erreur:syntaxe asm en ligne VC l'erreur

main.cpp(57): error C2400: inline assembler syntax error in 'second operand'; found '[' 
main.cpp(58): error C2415: improper operand type 

ligne 57 est la ligne avec l'instruction mov. Je ne vois pas ce que je fais mal ici, en particulier l'instruction d'appel. Quelqu'un peut-il me dire comment supprimer cette erreur?

Répondre

2

La question évidente serait pourquoi vous pensez que vous voulez faire cela. Pour la première instruction, le problème est purement syntaxique, et trivial de fixer:

mov bl, byte ptr [0x0068F51C] 

Il y a quelques façons de fixer la deuxième instruction. Une possibilité serait comme ceci:

mov eax, 0x004523C0 
call [eax] 

Les méthodes propres/plus directs d'appeler une utilisation d'adresse arbitraire directives assembleur que je ne pense pas que sont pris en charge par l'assembleur en ligne, donc au moins désinvolture je ne suis pas sûr d'une façon plus propre de gérer ce particulier.

+0

Je ne vois pas pourquoi il est illégal d'utiliser l'instruction d'appel avec une constante dans l'assembleur en ligne parce que je l'ai vu pendant le débogage. Eh bien, je suppose que votre méthode va faire pour l'instant. – kaykun

Questions connexes