Darkneon
Messages postés56Date d'inscriptionvendredi 18 mai 2001StatutMembreDernière intervention13 décembre 2005
-
15 janv. 2004 à 02:30
Darkneon
Messages postés56Date d'inscriptionvendredi 18 mai 2001StatutMembreDernière intervention13 décembre 2005
-
16 janv. 2004 à 21:05
Salut a tous.
Lorsque je mets du codes assembleur dans ma classe le compilateur me renvoit l'erreur suivante.
"Inline assembly not allowed in inline and template functions"
Pour mettre le code j'utilise _asm { ... }, c'est dans une function dans la section public de la classe. La class est dans un header.
Quelqu'un sait comment contourner se probleme sans utiliser REGS ou les registres directes comme _AX. J'utilise TC++.
Darkneon
Messages postés56Date d'inscriptionvendredi 18 mai 2001StatutMembreDernière intervention13 décembre 2005 15 janv. 2004 à 18:30
*se cogne le front contre le mur*
C'etait trop evident :big)
Mais j'ai un autre probleme, lorsque j'utilise une variable declaree dans la section private de ma class, dans un bloque asm, cela me donne une erreur de "expression syntax error"?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 15 janv. 2004 à 21:02
ton problème c'est que dans ton code asm tu ne peux pas utiliser certaines variables parce qu'elles sont privées non?
Si elles étaient publiques, tu aurais le meme probleme ou pas?
Darkneon
Messages postés56Date d'inscriptionvendredi 18 mai 2001StatutMembreDernière intervention13 décembre 2005 15 janv. 2004 à 21:06
Attend, je vais aller tester plus. Les variables sont privee en dehors de la class, mais peuvent etre utiliser partout dans la class. Le bloque asm est dans la class.
Darkneon
Messages postés56Date d'inscriptionvendredi 18 mai 2001StatutMembreDernière intervention13 décembre 2005 15 janv. 2004 à 21:21
Alors,
J'ai beau declarer la variable dans n'importe quel section de la classe: private, protected ou public, j'ai toujours la meme erreur.
Si je declare la variable en global, la j'ai aucune erreur.
Mais je crois qu'il doit y avoir une syntaxe speciale pour utiliser les variables dans la classe. Apres tout, le compilateur me renvoit une erreur de syntaxe et non que la variable n'as pas ete trouver.
J'ai regarder dans l'aide du compilateur mais rien trouver.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 16 janv. 2004 à 11:07
Ah oui je n'avais pas tout vu, il etait tard.
__asm mov word ptr[var], ax
cette ligne est valable au niveau de la syntaxe mais meme pas besoin d'essayer, je pensais var locale a la fonction, et non, c'est un membre de la classe donc pas besoin d'essayer, le compilo a raison.
var est alloue avec le reste de ta classe, faudrait donc calculer son offset en memoire a l'execution. Il est donc impossible d'ecrire direct 'mov [var], truc', dans tous les cas s'il faut vraiment de l'asm pour optimiser alors vire les classes et tu feras ce que tu veux.