Je travail avec les Tutoriaux de Shaun Dore avec Dev-C++ et je n'arrive pas à insérer de l'asm.
1° solution:
asm("mov $0x13,%al\n
mov $0x00,%ah\n
int $0x10");
messages d'erreurs: 1 missing terminating " character
1 expected asm body before "mov"
1 `mov' undeclared (first use this function)
1 expected `;' before "$0x00"
1 stray '\' in program
2 missing terminating " character
2° solution:
__asm("mov %ax, 13");
__asm("0x10");
messages d'erreurs: junk at end of line, first unrecognized character is `0'
messages d'erreurs: suffix or operands invalid for `int'
junk at end of line, first unrecognized character is `1'
Si vous avez une autre solution merci de me la donner
faut il ajouter une INCLUDE pour de l'asm?
__________________________
n'hesitez pas à visiter Mon site et surtout Mon Tutorial C
Dans certains codes sources, j'ai également rencontré du language assembleur. Mais utilisant Dev-C++ également, je n'ai jamais réussi a compiler un programme qui en contenait...et j'ai fini par abandonner!
Néanmoins, il ne me parrait pas improbable qu' un compilateur C-C++ puisse compiler des lignes d'assembleurs.
Quand je programmais, en C, des microcontroleurs durant ma formation, on utilisait un logiciel de developpement qui "passait" par l'assembleur avant de traduire en language machine. Je m'en souviens très bien car c'est grâce à ça qu'on nous avais montré l'interet d'un language de haut niveau (le C, par exemple) par raport à un language de bas niveau ( l'assembleur).
Un prog d'un dizaine de lignes en C se traduisait en un code de plusieurs centaines de lignes en assembleur.
Je ne sais pas du tout si tous les compilateurs utilisent le même procédé, mais le fait d'avoir vu des sources C contenir quelques lignes asm m'incite à penser que c'est possible...
Je confirme aussi qu'il est possible de faire de l'assembleur avec C et C++.
Je crois que le mot clé est asm ou _asm ou __asm, mais je n'en ai jamais fait et ne sais malheureusement pas comment on fait.
Ca dépend en fait du compilateur, DevC++ utilise Mingw, sous linux, c'est en gcc ou g++ qu'on utilise.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
Bien entendu, c'est possible.
DJGPP le faisait d'ailleurs.
Doit y avoir une syntaxe un peu particulière pour lui dire, c'est tout.
Ou alors dev-c++ ne sait pas le faire, et il te faudra te tourner vers un autre compilateur.
__________________________
....... Curtis: RTS 3D .......
Après quelques recherches dans mes vieilles sources abandonnées dans un sombre recoin de mon disque dur, j'ai retrouvé une source contenant de l'asm mais qui ne compilais pas...bien qu'il semblerai que ce ne soit pas le code asm qui pose problème.
Je ne peux rien affirmer mais, voici peut etre la solution :
Le mot clé est "_asm"
_asm
{
//mon code asm ( ex: MOV 5,A )
};
Le second problème que tu rencontrera est la syntaxe assembleur! il en existe deux (...principale en tout cas) : La syntaxe AT&T et la syntaxe Intel !
Il semblerai que ce soit la syntaxe AT&T qu'il faut utilisé avec Dev-C++.
La principale différence entre les deux, ce situe au niveau des registres "sources" et "destination"
Ex : MOV 5(registre source), A(registre destination) ...ou inversement pour l'autre syntaxe!
Malheuresement, tout ceci ne sont que quelques souvenirs et je ne suis pas sûr de l'exactitude de ce que je viens d'ecrire.
Il me semble que la différence fondamentale entre la syntaxe AT&T en Intel est dans "l'ordre" des registres sources et destinations.
Donc ton code assembleur s'ecrirait :
_asm("mov 13h, %ax);
_asm("0x10");
Par contre, je ne suis pas sûr de la syntaxe (notament pour les "")
Je ne crois pas qu'il y est des fonctions différente dans les deux syntaxes...en tout cas pour les fonctions les plus courantes...(par fonction, j'entend les instructions type mov, add, sub...)
Donc [Résolu] ?
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].