cs_guillaume80
Messages postés3Date d'inscriptionlundi 12 avril 2004StatutMembreDernière intervention16 juin 2004
-
14 juin 2004 à 16:49
cs_guillaume80
Messages postés3Date d'inscriptionlundi 12 avril 2004StatutMembreDernière intervention16 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
cs_guillaume80
Messages postés3Date d'inscriptionlundi 12 avril 2004StatutMembreDernière intervention16 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.
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 20121 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.
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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++
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_guillaume80
Messages postés3Date d'inscriptionlundi 12 avril 2004StatutMembreDernière intervention16 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.