[gcc] que veut dire __aligned__ ??

que veut dire __aligned__ ?? [gcc] - C - Programmation

Marsh Posté le 11-08-2003 à 20:39:47    

que veut dire la declaration suivante ??
je pense que c est asser lie a l aspect de la memoire de la machine, mais j ai pas trouve ce la signification :(
 

Code :
  1. char  PrevHalfField_Lu[1920*14] __attribute__( (aligned( 8 )) ); /* half field reserve for lu */


Message édité par slvn le 11-08-2003 à 21:10:35
Reply

Marsh Posté le 11-08-2003 à 20:39:47   

Reply

Marsh Posté le 11-08-2003 à 20:43:29    

Reply

Marsh Posté le 11-08-2003 à 21:02:10    

mince, je pensais pas a chercher dans gcc.
thx.
 
donc voici l explication :
ca permet de specifier la taille dans la memoire en octet.
 
ex :

Code :
  1. char x __attribute__( (aligned( 8 )) );
  2. char y;


 
le compilateur declare la variable x. et y est definie a &x + 8 octects.
 
utilisation : pour mapper la memoire.

Reply

Marsh Posté le 11-08-2003 à 21:04:29    

voilà. et y a tout un tas de réglage possible et d'application

Reply

Marsh Posté le 11-08-2003 à 21:08:02    

yep, je connaissais pas du tout, y a enormement d autre fonctionnalite.
 
par contre je capte pas un truc : dans l exemple que j ai donne :

Code :
  1. char  PrevHalfField_Lu[1920*14] __attribute__( (aligned( 8 )) ); /* half field reserve for lu */


 
le tableau est enorment  (1920*14 octet) ..et le aligned vaux 8 seulement.
donc ce aligned sert a rien ??

Reply

Marsh Posté le 11-08-2003 à 22:04:35    

Si ca oblige" le compilateur à positionner le début du tableau à une adresse mémoire multiple de 8, ça a quand même de l'"effet"....

Reply

Marsh Posté le 11-08-2003 à 22:06:22    

CARBON_14 a écrit :

Si ca oblige" le compilateur à positionner le début du tableau à une adresse mémoire multiple de 8, ça a quand même de l'"effet"....

justement par ce que le tableau est énorme, un positionnement optimale permet une meilleure manipulation

Reply

Marsh Posté le 11-08-2003 à 22:12:51    

j admet que si le debut du tableau est a une adresse multiple de 8, le traitement est optimise.
 
par contre, c est pas ce que j entendais par l utilisation de aligned.
 
je pensais que pour  

Code :
  1. char x __attribute__( (aligned( 8 )) );
  2. char y;

 
 
 l adresse de x (&x) etait quelconque. mais que y etait place 8 octet exactement apres l adresse de x   :??: (ie:  &x + 8octect == &y )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed