" standard " était peut-être mal choisi... Justement parce que vu que quasi-tous les systèmes 32 bits sont ILP32, un programmeur s'attendrait plus à du ILP64 ne dissociant pas "int" et "long" comme le fait le LP64.
Euh ça, ça dépend totalement du processeur, et le LP64 est beaucoup fréquent, notamment dû au fait que les processeurs Intel et PPC 64 bits utilisent ce mode... Il existe par ailleurs des processeurs comme le SPARK, qui sont SILP64, c'est-à -dire Short, Int, Long, Long Long et Pointer en 64 bits. Et donc ILP32 c'est le processeur 32 bits traditionnels, avec un Short en 16 bits et le reste en 32.
LP64 n'a pas du tout été choisi par Apple. C'est juste comme ça que sont définis les processeurs sur lesquels Mac OS X tourne.
Euh... Le data model n'a rien à voir avec le processeur... Un processeur n'est pas typé ! Lui il travaille avec des registres 32 ou 64, basta... À l'OS au dessus de choisir son data model.
Par contre, c'est vrai que LP64 est plus courant, du coup, je peux ranger mon " standard "
Oui mais la compilation du C en langage assembleur, qui n'a pas de type explicite certe, dépend largement de la machine et par exemple dans un SILP64, tous tes entiers devront être assemblé pour faire 64 bits, pour pouvoir être utilisés correctement par le processeur, et t'as pas vraiment le choix à ce niveau.
Bien sûr, tu pourrais dire "je convertis mes int de la même manière que mes long long", et à ce moment tu serais automatiquement en ILP64... Mais ce serait débile de faire ça si tu as des registres prévus pour contenir des 32 bits de manière plus optimisée.
Hum... Tu peux me donner tes sources de " processeur SILP64 " ? Parce que pour moi un data modèle associé à " processeur ", c'est un non-sens.
Par ailleurs, de nombreuses API (APR, l'API win-32...) utilisent leurs propres types avec la taille et le " signage " spécifiés, ce qui permet de s'abstraire de tout data modèle justement. Donc le coup de " pas vraiment le choix à ce niveau "...
Réponses
Justement parce que vu que quasi-tous les systèmes 32 bits sont ILP32, un programmeur s'attendrait plus à du ILP64 ne dissociant pas "int" et "long" comme le fait le LP64.
Il existe par ailleurs des processeurs comme le SPARK, qui sont SILP64, c'est-à -dire Short, Int, Long, Long Long et Pointer en 64 bits.
Et donc ILP32 c'est le processeur 32 bits traditionnels, avec un Short en 16 bits et le reste en 32.
LP64 n'a pas du tout été choisi par Apple. C'est juste comme ça que sont définis les processeurs sur lesquels Mac OS X tourne.
Un processeur n'est pas typé ! Lui il travaille avec des registres 32 ou 64, basta... À l'OS au dessus de choisir son data model.
Par contre, c'est vrai que LP64 est plus courant, du coup, je peux ranger mon " standard "
Bien sûr, tu pourrais dire "je convertis mes int de la même manière que mes long long", et à ce moment tu serais automatiquement en ILP64... Mais ce serait débile de faire ça si tu as des registres prévus pour contenir des 32 bits de manière plus optimisée.
Par ailleurs, de nombreuses API (APR, l'API win-32...) utilisent leurs propres types avec la taille et le " signage " spécifiés, ce qui permet de s'abstraire de tout data modèle justement. Donc le coup de " pas vraiment le choix à ce niveau "...