Assembleur dans du code c

Signaler
Messages postés
3
Date d'inscription
lundi 12 avril 2004
Statut
Membre
Dernière intervention
16 juin 2004
-
Messages postés
3
Date d'inscription
lundi 12 avril 2004
Statut
Membre
Dernière intervention
16 juin 2004
-
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

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

char *ecran = 0xA0000000;
Doit suffire.

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
3
Date d'inscription
lundi 12 avril 2004
Statut
Membre
Dernière intervention
16 juin 2004

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.
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
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++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
3
Date d'inscription
lundi 12 avril 2004
Statut
Membre
Dernière intervention
16 juin 2004

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.