[SOS] Bug supposé a l'initialisation de la GDT.
David Decotigny
David.Decotigny at free.fr
Ven 29 Juil 13:43:53 CEST 2005
Bonjour,
stephane duverger wrote:
> Il est dit que c'est l'adresse de base de la GDT qui doit etre alignée
> sur 8 octets. Donc la valeur contenue dans le champ "base_addr" de votre
> structure.
Oui. La definition de "un objet machin est aligne sur X octets" est tout
simplement "le premier champ de machin est aligne sur X octets".
Dans notre cas, comme ce champ base_addr est le premier de la structure
(de memoire, j'ai pas le code sous les yeux), c'est donc la structure
dans son ensemble qui sera alignee sur 8 octets. Et reciproquement.
> Cependant les attributs gcc s'appliquent sur les instances de cette
> structure "x86_gdt_register". C'est donc l'adresse d'un objet de ce
> type, en l'occurence la variable initialisant le registre gdtr, qui est
> alignée sur 8 octets et non pas la valeur contenue dans un de ses
> champs.
Je ne comprends pas cette remarque.
Si je dis :
<<
Je declare une struct toto avec un attribut "align(8)";
puis:
J'instancie un objet obj de type "struct toto";
>>
Alors obj sera aligne sur 8 octets. C'est par definition equivalent a
dire que le premier champ de obj sera aligne sur 8 octets.
Bonne journee,
Plus d'informations sur la liste de diffusion Sos