(Courriels de diversion: <cedions@dissipait-tritureras.com> <estrades@busards-falsifierai.com> <onduleur@youyous-naîtrons.com> <gobelins@confirmais-industrialisez.com> <tonsure@evolutionniste-vouvoies.com> <raccompagnerons@enquêteuse-terrifiantes.com> <cachous@confectionneuses-etend.com> <justifiaient@travestirent-cloueriez.com> <chaire@paralysa-inculqueront.com> <perfectionnement@controlable-municipalite.com> )


dominique.sommavilla@free.fr a écrit :
> J'ai 1 programme écrit en C sous Unix faisant appel à des matrices de flottants.
> Je dois maintenant le "passer" sous Linux et apparamment il faudrait utiliser un
> programme de conversion et choisir entre Big et Little Indian ?
>
> Quelqu'un pourrait-il m'éclairer sur ces notions, soit sur la liste soit "en
> privé" sur dominique.sommavilla@cesbio.cnes.fr ?>

La notion de Big ou Little Endian ne vient pas de l'OS mais du matériel. Les
stations Unix
fonctionnent généralement avec des processeurs RICS ou autres qui sont des Big
Endians.
Les PC fonctionnent avec des processeurs Intel ou AMD qui sont Little Endian.

Cette notion de Big ou Little endian vient de la manière dont les processeurs
utilisent l'espace mémoire
pour stocker les données. Par exemple pour stocker l'entier 0x12345678 (4 octets en
32 bits par exemple),
une machine Big endian stockera l'entier sous la forme 12, 34, 56, 78 dans les 4
octets nécessaires
alors qu'une machine Little Endian le stockera sous la forme 78, 56, 34, 12.

Dans votre cas, si le programme à convertir n'échange pas de données (sous forme
binaire réseau ou fichiers binaires) avec d'autres programmes fonctionnant sous des
machines Big Endian,
une simple recompilation suffira (en général presque rien à modifier). Si par
contre il y a des échanges, il y a du travail
à faire.

Pour se prémunir de ces genre de problèmes, il est possible d'utiliser des
librairies d'encodage des messages comme
c'est le cas pour les RPC (format XDR) ou bien avec CORBA; mais cette étape doit
être faite dès la conception du logiciel
et est difficilement réalisable à postériori.

Une autre possibilité est d'utiliser Linux sur du matériel Big Endian (Power PC par
exemple).

>
> Linux étant la version PC d'Unix, je me demande pourquoi cette conversion est
> nécessaire ou pourquoi elle n'est pas "transparente pour l'utilisateur" ?
>

(Linux n'est pas LA version d'Unix pour PC, c'est une implémentation nouvelle qui
satisfait les API Unix)
Compte tenu des structures de programmation (en C les structs), il est impossible
d'avoir un programme
de traduction universel; ce travail doit être fait soit par le programmeur soit en
utilisant des librairies dès le début.


>
> Merci d'avance.

Salutations,

Vivien Malerba

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


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