Instruction assembleur dans un code c

Fermé
martur Messages postés 11 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 juin 2010 - 8 mai 2010 à 21:49
martur Messages postés 11 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 juin 2010 - 9 mai 2010 à 02:17
Bonjour pour tous

J'utilise le GCC pour la compilation d'un code C.
Dans mon code j'ai un tableau et je veux affecter à chaque élément du tableau une valeur se trouvant en mémoire . Par exemple TAB[0] prend la valeur à l'adresse 0x0.

Donc je dois utiliser une instruction en assembleur pour faire cela .
Est ce que quelqu'un une idée comment faire çà.

J'ai utilisé une instruction pour enregistré une output de mon code c dans la mémoire
("l.sw\t0x0(r0) : : "r" (y[0]));

mais pour le chargement j'ai pas d'idée

Je tiens a votre aide
Merci
A voir également:

8 réponses

0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
8 mai 2010 à 22:54
Je ne vois pas pourquoi tu as besoin d'une instruction en assembleur. Il suffit d'utiliser un pointeur. Tu peux même faire pointer ton tableau directement sur l'adresse que tu veux . Exemple tab = 0x0; tab + 1 = 0x2;
0
martur Messages postés 11 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 juin 2010
8 mai 2010 à 23:23
Merci pour ta réponse

bon j'ai pas de compétence en c.
Donc si je pointe mon tab à l'adresse 0 donc tab[0] aura la valeur existante à l'adresse 0??
0
0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
8 mai 2010 à 23:39
Alors un pointeur c'est un variable qui stocke une adresse. C'est à dire que si tu met tab = 0x0; tu pointeras vers l'adresse 0x0 ( tu pourras donc accéder à la valeur qui se trouve à cette adresse)
Ensuite si tu veux seulement stocker dans ton tableau la valeur qui est à cette adresse il faut indiquer seulement la valeur:
char *p = 0x0;
*tab = *p;
0
martur Messages postés 11 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 juin 2010
8 mai 2010 à 23:52
D'accord Merci pour ton aide je vais essayé çà
0

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

Posez votre question
martur Messages postés 11 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 juin 2010
9 mai 2010 à 00:48
Ok j'ai testé et c bon . Merci bien
Je vais profiter de votre connaissance pour les pointeurs . Donc est ce que je peux enregistrer une résultat à une adresse bien défini??
0
0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
9 mai 2010 à 01:22
De rien.
En ce qui concerne la sauvegarde à une adresse bien définie ça dépend si l'espace mémoire correspondant a déjà été alloué ou pas.
Si cette adresse correspond à un pointeur déjà alloué pas de problème, il suffit de faire *p = valeur.
Par contre si tu veux choisir l'adresse à laquelle allouer ca devient beaucoup plus compliqué, et honnêtement je ne sais pas si c'est possible. Je sais que sous les systèmes d'exploitation respectant la norme POSIX c'est possible avec la fonction mmap mais je pense que ca dépasse nos compétences à tous les 2 ^^.
0
martur Messages postés 11 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 juin 2010
9 mai 2010 à 01:49
Oui je veux choisir l'adresse.
Pas de pb j'utilise une instruction assembleur pour faire celà.
J'ai voulu just la changer si c'est possible en c .

Merci
0
0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
9 mai 2010 à 02:07
Honnêtement je ne sais pas comment faire, ni même si c'est possible.
0
martur Messages postés 11 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 3 juin 2010
9 mai 2010 à 02:17
Oui Ok , Merci pour vous déjà.

Alors si vous aurez besoin un jour d'enregister une donnée a une adresse spécifique , vous allez utilisez assembleur :) :)

MErci
0