Assembleur dans du code c

cs_guillaume80 Messages postés 3 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 16 juin 2004 - 14 juin 2004 à 16:49
cs_guillaume80 Messages postés 3 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 16 juin 2004 - 16 juin 2004 à 00:19
bjour a tous,
dans un code c récupéré, j'ai pris le code pr le compiler sauf qu'il y a eu des soucis, il m'en reste un, c'est le suivant :

char *ecran = (char *) (0xA0000000L); // Pointeur sur RAM video

turbo c++ me dit q l'initialisation est illégale. On place la variable ecran pr q'elle pointe sur une zone de RAM video, utile pour faire des choses graphiques par l'intermédiaire de l'assembleur. kel est la solution ? est ce une option a changer pr q turbo c ne detecte l'affectation comme une erreur ou faut t il faire autre chose ? dites-moi, j'aimerai m'en sortir.
merci d'avance

5 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
14 juin 2004 à 19:36
Bonjour,

char *ecran = 0xA0000000;
Doit suffire.

@+
Arnotic,
Admin CS, MVP Visual C++
0
cs_guillaume80 Messages postés 3 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 16 juin 2004
14 juin 2004 à 22:00
j'ai essayé, ca ne marche pas car 0xA0000000 est un unsigned long et ecran un char *, un cast parait inévitable.
alors j'ai essayé ceci : char *ecran=(char) 0xA0000000;
ca marche, il faut maintenant q je trouve le logiciel tasm pour q le compilateur reussisse a comprendre la partie assembleur du code, si arnotic ou un autre connait un site pr le télécharger, faites moi signe, merci d'avance les gens.
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
14 juin 2004 à 22:04
concernant le cast je ne sais pas.
je ne travaille qu'avec les outils de Microsoft VS 2003 et char *c = 0x00000000; fonctionne sans aucun problème puisque c'est un pointeur qui contient donc une adresse mémoire donc un nombre.
pour tasm je ne sais pas non plus car j'utilise masm personnelement.

@+
Arnotic,
Admin CS, MVP Visual C++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juin 2004 à 22:39
char *ecran=(char) 0xA0000000;
Ceci est ARCHI FAUX !!!
Ton pionteur aura de fortes chances de pointer vers ZERO, plantage garanti en ce cas.
Essaie de le mettre sur 2 lignes:
char *c;
plus loin: c = (char*) 0xA0000000;
Dans tous les cas, si c'est pour mettre de l'ASM derriere, a quoi te sert de faire une declaration "C" char* ???
Tu te sers direct d'une valeur sur registre.

ciao...
BruNews, Admin CS, MVP Visual C++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_guillaume80 Messages postés 3 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 16 juin 2004
16 juin 2004 à 00:19
oui je suis d'accord, le cast en char est une grossiere erreur de ma part, je vais essayer ce q brunews m'a conseillé, j'ai fai un 1er essai, mais il n'a pas compilé comme si il n'avait pas assez de ressources, enfin je vais réesayer, je dirai ce qu'il en est, merci a vous 2.
0
Rejoignez-nous