[iOS] Compilation de l'Ojective-C & Architecture

ASGdev

Membre enregistré
30 Décembre 2011
6
0
29
Auvergne, France
Bonjour,
Je dois développer une petite application pour iPhone.
Je dois également préparer un dossier.

J'ai une question, par rapport à la compilation : le c se compile avec gcc en code assembleur i386 interprété par l'architecture Intel...l'Objective C étant une surcouche du c, est-ce pareil ?
Pourtant le processeur de l'iPhone n'a t-il pas une architecture ARM ? :confused:


Si vous pouvez m'aider....

Merci, & bonnes fêtes !

ASGdev.
 
Non le c est un langage de programmation indépendant du hardware.
GCC existe pour d'autres type de processeurs (arm, ppc, ....)
ObjectiveC est une extension du C, mais la norme c vient d'évoluer et intègre maintenant une parti des ajout de l'objectiveC
 
Tu confonds quelques notions:
  • les microprocesseurs exécutent du code machine. Il s'agit d'une série de chiffres. Par exemple, une instruction est codée sur 32 bits; une partie des bits désigne l'opération (ce qu'il faut faire), le reste les opérandes (à quoi ça s'applique).
  • le langage d'assemblage fait correspondre des mnémoniques à du code machine. C'est à dire qu'au lieu de lire un chiffre comme 0x0003AAFF, tu verras move.l D0, #$AAFF, ce qui rend le code machine plus humain. L'assembleur est le programme qui convertit le langage d'assemblage en code machine.
  • chaque architecture (i386, armv6, PowerPC, etc.) possède son propre code machine et donc son propre langage d'assemblage.
  • les compilateurs C convertissent le code C en code machine.
  • gcc peut compiler pour un tas d'architectures différentes, notamment i386, armv6 et armv7.
    Quand on utilise le simulateur iPhone qui tourne sur le Mac, le code est compilé pour i386. Quand c'est pour le terminal iOS, c'est du code armv6 ou armv7 qui est produit.
  • enfin, Objective-C est certes une surcouche du C, mais la compilation génère directement du code machine. Note que dans les premières versions d'Objective-C, le code ObjC était effectivement convertit en langage C, puis compilé.