J'aimerais connaître un moyen d' accèder aux champs de cette structure :
Citation :
_fifo:
dc32 fifo
fifo: ; Donnees de la fifo
ds32 1 ; Taille de la fifo
ds32 1 ; Pointeur d'ecriture
ds32 1 ; Pointeur de lecture
ds32 1 ; Compteur d'insertion
ds8 16 ; Tampon des donnees
Je voudrais par exemple placer le contenu du registre R1 pour fixer la taille de la fifo...etc
J'ai déjà essayé qqchose du genre : str r1,_fifo mais il y a une erreur générée par le fait que r1 et fifo ne sont pas de meme taille:
Citation :
Error[414]: Bad instruction alignment. ARM instructions must be 32-bit-aligned and Thumb instructions must be 16
Pouvez vous m'aider, s'il vous plait?
Merci
Ouar
---------------
La théorie c'est quand on connait tout et que rien ne marche.
Publicité
Posté le 10-01-2007 à 18:28:13
god666
Posté le 18-09-2007 à 11:51:08
Bonjour,
Ton erreur n'est aps une question de taille, mais un problème d'alignement mémoire (str est une instruction ARM 32 bits donc l'adresse doit être alignée en mots de 4 bytes).
Après de tête il me semble que str ne peut aps être utilisé que sur un registre comme adresse.
teste un truc du genre:
Citation :
ldr r0,=_fifo ;met l'adresse de ton tableau dans le registe r0
str r1,[r0] ;store contenu de r1 à l'adresse r0
mais là attention, il faut que ton adresse soit multiple de 4.
Si ce n'est pas le cas, il faut le faire byte par byte avec une bidouille du genre
Citation :
ldr r0,=_fifo ;met l'adresse de ton tableau dans le registe r0
strb r1,[r0]
mov r1,r1,lsr,#8 strb r1,[r0,#1] mov r1,r1,lsr,#8 strb r1,[r0,#2] mov r1,r1,lsr,#8 strb r1,[r0,#3]