OVH Cloud OVH Cloud

Première lecture de "Universal Binary Guideline"

11 réponses
Avatar
pdorange
FU2 : <fr.comp.sys.mac.programmation>

Apple a annoncé hier le début du support de processeur Intel pour
l'architecture mac à partir de 2006.

Ce matin Apple a publié pour les développeurs un guide de transition et
fournit d'or et déjà XCode 2.1 qui supporte les 2 architectures
(processeur PowerPC et Intel).

Ce document apporte quelques éclaircissements.

Universal Binary permet de produire un logiciel qui sera à la fois
compatible avec les Mac actuels (PowerPC) et la prochaine génération
(Intel).

<http://developer.apple.com/documentation/MacOSX/Conceptual/universal_bi
nary/>

Après une première lecture rapide, voilà les gros points que je relève :

* Pour utiliser "Universal Binary" il faut utiliser le package 10.4.
Mais on peut assigner 2 cibles aux projets : par exemple une cible
"universal Binary" avec 10.4 et aussi une cible "10.3".

* On reconnaitra les logiciel "UB" depuis le Finder (panneau Info, item
Architecture : PowerPC ou Intel ou PowerPC/Untel

* Les développeurs auront accès aux extensions Intel MMX, SSE et SSE2
qui sont "un peu" les équivalents de Altivec

Les principales différences architecturales :

* alignement : le code PowerPC doit être alignés sur 4 octects, pas le
code Intel

* ordonnancement des octects : les 2 architectures utilise un
ordonnancement différents : LITTLE ENDIAN / BIG ENDIAN, cela n'a pas
d'effet direct le plus souvent mais c'est un point important pour la
compatibilité a surveiller avec attention.
Cela touchera les interfaces réseaux bas niveau, les fonctions CallBack
, les GWorld QuickDraw et les textures OpenGL notamment

* appels de fonction : les paramètres de fonctions ne sont pas passés de
la même façon (par registre sur PowerPC, dans la stack pour Intel).

* division par ZERO : fatal sur Intel, pas sur PowerPC

* les partitions disques seront gérés différemment sur les 2
architectures. Cela n'a d'influence que sur les logiciels qui utilise a
un bas niveau les infos de partitions disques

* les Mac a architecture Intel, n'utiliseront pas OpenFirmware

Concernant Altivec et plus généralement les instructions Vectorisés :

* Apple conseille d'utiliser la Framework "Accelerate" introduit avec
10.3 et étendu avec 10.4 qui fournit un niveau d'abstraction qui permet
de s'affranchir des spécificités de la plateforme (PowerPC/Altivec,
Intel/MMX/SSE ou sans accélération vectorielle).

* ou alors un portage complet de Altivec vers MMX ou SSE.

Concernant Rosetta :
Rosetta est un process de traduction qui permet de faire tourner du code
PowerPC sur un futur Mac/Intel.
Rosetta gère tout code PowerPC G3 compilé pour MaxcOS X.
Rosetta ne gère pas :
- le code MacOS 8/9 (Classic)
- le code Altivec
- insersion de panneau de préférences
- code spécifique G4 ou G5
- code relatif au noyau
- extensions Kernel
- Java avec JNI

Rosetta traduit le code à la volée et s'éxecute dans le même process que
le logiciel "émulé". Rosetta utilise un cache pour améliorer les
performances.
Rosetta prend en comme l'ordonnancement des octects.
Depuis le Finder (panneau Info) on pourra forcer un logiciel utilisant
UB a tourner dans Rosetta (PowerPC on Intel).

* dans les annexes de ce document on trouve une partie concernant le
portage de logiciel utilisant le FramWork CodeWarrior : PowerPlant.


A complèter

--
Pierre-Alain Dorange

Vidéo, DV et QuickTime <http://alcazar.xbecom.com/videogarage/>
Clarus, the DogCow <http://clarus.chez.tiscali.fr/>

1 réponse

1 2
Avatar
Eric Lévénez
Le 12/06/05 10:16, dans <42abef3b$0$17483$,
« verdoux » a écrit :

Eric Lévénez wrote:
Le 11/06/05 16:00, dans <42aaee8e$0$4914$, « Gilles
en x64, le nombre de registre double.



Le terme "x64" est impropre. Il fait référence au "x86" où le x voulait dire
1, 2, 3, 4... Le terme "x64" est le terme utilisé par Microsoft pour
qualifier ses versions de Windows marchant sur les processeurs 64 bits. Il
vaut mieux utiliser le terme IA64 qui au moins ne fait pas référence à
Microsoft.


x86-64 plutôt. IA64, c'est la dénomination Intel pour l'archi des Itanium.


Oui, effectivement :-)

De plus "x86-64" était la dénomination AMD, et "x86_64" était celle d'Intel.
AMD ayant ensuite adopté "AMD64", Intel étant passé rapidement au "IA-32E"
(peu vendeur) au "EM64T" actuel...

Je me demande quel nom est le plus "propre"...

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.



1 2