(Courriels de diversion: <auditionnera@bizarrement-jongliez.com> <laitage@assiegerez-etagements.com> <hydravion@fassions-bâtee.com> <dirigerais@militaires-pharmacien.com> <demissionnent@aeronavale-tordit.com> <chiffonne@mante-socs.com> <teintons@notoriete-appliquerait.com> <profererai@cacophonique-vitupererai.com> <rationalisais@postulerai-ecririons.com> <becanes@deplissage-retomberons.com> )


Pierre Monlong wrote:
> 
> ---------------------------------------
> void function (int a, int b, int c) {
>         char buffer1[4];
>         char buffer2[8];
>         int *ret;
> }
> void main() {
>         function(1,2,3);
> }
> ----------------------------------------

> (gdb) run
> Starting program: /root/toto/essai
                     ^^^^
                     !  est-ce bien prudent de bizouiller
                     !  des pointeurs en root ?

> -------------------------------------------
> Ce qui nous fait bien 1 mot pour buffer1 (0xbffff9e0-0xbffff9dc=4)
> mais on a 3 mots pour buffer2 !! (0xbffff9dc-0xbffff9d0=0xc=12)
> pour ret on a bien 1 mot (0xbffff9d0-0xbffff9cc=4)
> 
   On peut supposer que le compilateur déplace des variables afin de
   privilégier certains alignements sur des adresses multiples de 4
   ou de 8 octets. Par exemple un 68020 n'est pas capable de lire un
   mot de 16 ou 32 bits sur une adresse impaire. Les accès mémoires
   des mots 32 bits sont beaucoup plus véloces si ils sont alignés
   sur un multiple de 4 pour d'autres processeurs... Laisse faire gcc,
   il sait ce qu'il fait.

   Th.

---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>