Visual Studio 2008 x64 et procedure __asm

Signaler
Messages postés
2
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
16 novembre 2011
-
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,

Je voudrais passer un code de win32 en x64. A la compilation j'ai un message me disant que le mot clef "__asm, mov, etc.." sont inconnus.

Quelqu'un aurait il une explication?

 LDR

5 réponses

Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
salut ;o)

ton compilateur ne sais peu etre pas lire l asm?!! ;o)
ou : je n ai pas fait d asm 64 ;o) mais je suppose que les registres (de fait ) doivent etre codé sur 8octets ;o) de meme que les adresses ;o) cela doit rendre certaine commande asm incompatible avec la version 32... ;o)

GodConan ;o)
Messages postés
2
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
16 novembre 2011

C'est une réponse pertinente.

Le compilateur de MS comprend l'asm.
Le mot clef __asm ouvre une partie de code machine compilé par une partie distinct du compilateur.
Alors soit le compilateur n'est plus implémenté en asm ce qui m'étonnerais car MS à des partie en asm dans son propre code ou le mot clef à changer.
Donc ma question est : est ce qu'un autre identifiant remplace celui ci ?
Dans l'aide rien et chez MS non plus, à ma connaissance.
Est ce que quelqu'un aurais des infos ou une solution ?

 LDR
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
Merci pour la 'pertinence'... ;o)
mais désolé pas de réponse plus précise
;o);o)


GodConan ;o)
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10
Salut,

L'asm inline ne semble pas supporté par VS pour du x64, cf ici.

Divers solutions peu pratiques s'ouvrent à toi...
-> Ne pas faire le portage si possible (Autrement dit rester en 32 bits sachant que ça s'exécute pas trop mal sur un Windows 64 bits).

-> Tu peux réécrire en C les parties en assembleur (Et garder ou non l'assembleur dans le cas d'un compilation 32 bits avec des ifdef). A noter que des fonctions intrinsèques sont proposées par VS ce qui permet d'avoir indirèctement accès à des instructions assembleur autres que déplacement mémoire (Exemple rdtsc).

-> Certains des codes de BruNews sont apparemment 64 bits tout en utilisant de l'asm. Au lieu de passer par de l'assembleur en ligne, il utilise des fichiers séparés en .asm. Tu peux peut être étudier sa procédure de compilation. Il passe par ml64.exe pour assembler son code. Tu peux regarder ce genre de tuto aussi.

Je déplace le topic sur cppfrance.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10