(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/>