OVH Cloud OVH Cloud

Portabilités des unions

27 réponses
Avatar
Nicolas Maupu
Bonjour!

Une petite question me tarraude!
Est-ce que l'union est portable d'une architecture à une autre?
Typiquement, est-ce que le programme tournera sur un sparc comme sur un ix86
(sous le même OS)?

En effet, est-ce que sur certaines machines les poids forts/faibles ne
sont-ils pas inversés?

ex:
typedef union _u_int
{
int int_val;
char char_val[4];
}u_int;

Accède-t-on au premier octet de int_val par char_val[0], char_val[3]
ou ça dépend?

Merci.

--
Nico

7 réponses

1 2 3
Avatar
Jean-Louis Liagre
- Je suis à peu près convaincu que, si vous vous limitez à un nombre
fini de plateformes (x86, x86-64, Sparc par exemple), l'union comme
vous voulez l'utiliser ne vous emmerdera pas,



ÀMHA, là tu t'avances... Le Sparc est gros-boutien, je crois...


Oui.



Pas tout à fait, depuis une dizaine d'années, l'architecture SPARC v9
(ultraSPARC, 64 bits) permet de basculer d'un mode à l'autre "à chaud",
et meme d'avoir un mode mixte ou l'O/S (supervisor) est big endian mais
une application (user mode) est little endian ...
Je ne l'ai jamais vu mis en oeuvre et c'est toujours le big-endian qui
est utilisé, mais un jour quelqu'un se lancera peut-etre ...



Avatar
Jean-Louis Liagre
- Je suis à peu près convaincu que, si vous vous limitez à un nombre
fini de plateformes (x86, x86-64, Sparc par exemple), l'union comme
vous voulez l'utiliser ne vous emmerdera pas,



ÀMHA, là tu t'avances... Le Sparc est gros-boutien, je crois...


Oui.



Pas tout à fait, depuis une dizaine d'années, l'architecture SPARC v9
(ultraSPARC, 64 bits) permet de basculer d'un mode à l'autre "à chaud",
et meme d'avoir un mode mixte ou l'O/S (supervisor) est big endian mais
une application (user mode) est little endian ...
Je ne l'ai jamais vu mis en oeuvre et c'est toujours le big-endian qui
est utilisé, mais un jour quelqu'un se lancera peut-etre ...



Avatar
Jean-Louis Liagre
- Je suis à peu près convaincu que, si vous vous limitez à un nombre
fini de plateformes (x86, x86-64, Sparc par exemple), l'union comme
vous voulez l'utiliser ne vous emmerdera pas,



ÀMHA, là tu t'avances... Le Sparc est gros-boutien, je crois...


Oui.



Pas tout à fait, depuis une dizaine d'années, l'architecture SPARC v9
(ultraSPARC, 64 bits) permet de basculer d'un mode à l'autre "à chaud",
et meme d'avoir un mode mixte ou l'O/S (supervisor) est big endian mais
une application (user mode) est little endian ...
Je ne l'ai jamais vu mis en oeuvre et c'est toujours le big-endian qui
est utilisé, mais un jour quelqu'un se lancera peut-etre ...



Avatar
Jean-Louis Liagre
ÀMHA, là tu t'avances... Le Sparc est gros-boutien, je crois...


Oui.


Pas tout à fait, depuis une dizaine d'années, l'architecture SPARC v9
(ultraSPARC, 64 bits) permet de basculer d'un mode à l'autre "à chaud",
et meme d'avoir un mode mixte ou l'O/S (supervisor) est big endian mais
une application (user mode) est little endian ...
Je ne l'ai jamais vu mis en oeuvre et c'est toujours le big-endian qui
est utilisé, mais un jour quelqu'un se lancera peut-etre ...


Avatar
Jean-Marc Bourguet
Jean-Louis Liagre writes:

Erwan David wrote:
"Antoine Leca" écrivait :

Pierre Maurette wrote:

Il aurait d'ailleurs peut-être fallu affiner, il n'y a pas que
2 façons d'écrire des 32 bits dans une mémoire dont "l'atome"
est de 8 bits.


Certes, mais les autres manières sont ou des dinosaures, ou des mirages.
Par contre quand tu passes aux entiers 64 bits ça devinet nettement

plsu complexe en pratique. J'ai vu un processeur (mais j'ai oublié le
quel c'était...)


Il s'agit CPUs de la famille des processeurs LSI/11 ou
PDP/11,


J'en doute. Les PDP-11 sont des processeurs 16 bits, ce
sont les entiers de 32 bits qui étaient représentés 3 4 1 2.

fameux aussi pour leurs mots, sur certains modèles, de 12,
18 ou de 36 bits ...


Les autres (PDP-1, PDP-4, PDP-7, PDP-9, PDP-15 avec 18 bits,
PDP-5 et PDP-8 12 bits, PDP-6 et PDP-10 36bits) ont peu de
rapports avec le PDP-11 excepté le fabriquant (DEC), à ma
connaissance, le seul processeur de Digital ayant peut-être
un rapport est le VAX (32 bits) mais il n'était pas
"middle-endian".

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org




Avatar
Jean-Louis Liagre
Jean-Marc Bourguet wrote:
Jean-Louis Liagre writes:


Erwan David wrote:

"Antoine Leca" écrivait :


Pierre Maurette wrote:


Il aurait d'ailleurs peut-être fallu affiner, il n'y a pas que
2 façons d'écrire des 32 bits dans une mémoire dont "l'atome"
est de 8 bits.


Certes, mais les autres manières sont ou des dinosaures, ou des mirages.


Par contre quand tu passes aux entiers 64 bits ça devinet nettement
plsu complexe en pratique. J'ai vu un processeur (mais j'ai oublié le
quel c'était...)


Il s'agit CPUs de la famille des processeurs LSI/11 ou
PDP/11,



J'en doute. Les PDP-11 sont des processeurs 16 bits, ce
sont les entiers de 32 bits qui étaient représentés 3 4 1 2.


Exact, ils étaient bien moyen-boutistes mais 32 bits.

Il n'y a pas à ma connaissance de processeurs 64 bits de ce type tordu,
heureusement.

fameux aussi pour leurs mots, sur certains modèles, de 12,
18 ou de 36 bits ...



Les autres (PDP-1, PDP-4, PDP-7, PDP-9, PDP-15 avec 18 bits,
PDP-5 et PDP-8 12 bits, PDP-6 et PDP-10 36bits) ont peu de
rapports avec le PDP-11 excepté le fabriquant (DEC), à ma
connaissance, le seul processeur de Digital ayant peut-être
un rapport est le VAX (32 bits) mais il n'était pas
"middle-endian".


Mais bien de la meme famille (PDP), c'est juste ce que je voulais dire.





Avatar
Jean-Marc Bourguet
Jean-Louis Liagre writes:

Il n'y a pas à ma connaissance de processeurs 64 bits de ce type tordu,
heureusement.


Moi non plus; Erwann a l'air d'en avoir vu un. Domage qu'il
ne se souvienne plus de ce que c'est.

fameux aussi pour leurs mots, sur certains modèles, de 12,
18 ou de 36 bits ...
Les autres (PDP-1, PDP-4, PDP-7, PDP-9, PDP-15 avec 18 bits,

PDP-5 et PDP-8 12 bits, PDP-6 et PDP-10 36bits) ont peu de
rapports avec le PDP-11 excepté le fabriquant (DEC), à ma
connaissance, le seul processeur de Digital ayant peut-être
un rapport est le VAX (32 bits) mais il n'était pas
"middle-endian".


Mais bien de la meme famille (PDP), c'est juste ce que je
voulais dire.


Ils sont autant de la même famille que l'Itanium et le
Pentium. Peut-être encore moins.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org



1 2 3