Question

Quelles sont les considérations que dois-je faire si je veux que mon code fonctionne correctement sur à la fois 32 bits et 64 bits des plates-formes ?

EDIT:Ce genre de zones, dois-je prendre soins dans, par exemplel'impression des chaînes de caractères/ou de l'utilisation de structures ?

Était-ce utile?

La solution

Options:

Code dans un langage avec un La Machine Virtuelle (comme Java)

Code dans .NET et n'ont pas de cibles spécifiques de l'architecture.L' .NET compilateur JIT permettra de compiler pour vous à droite de l'architecture avant de l'exécuter.

Autres conseils

Une solution serait de cibler un environnement virtuel qui fonctionne sur les deux plates-formes (je pense à Java, ou .Net ici).

Ou choisir un langage interprété.

Avez-vous d'autres exigences, telles que l'appel de code existant ou de bibliothèques?

Les mêmes choses que vous auriez dû faire tout le long pour vous assurer d'écrire du code portable :)

mozilla lignes directrices et la C faq sont de bons points de départ

Je suppose que vous êtes toujours en train de parler la compilation - les séparément pour chaque plate-forme individuelle?Comme en cours d'exécution sur deux est complètement faisable par la simple création d'une 32 bits binaires.

Le plus important est de s'assurer que vous ne mettez pas de pointeurs en 32 bits emplacements de stockage.

Mais il n'y a pas de " langue-agnostique réponse à cette question, vraiment.Vous ne pouvais même pas obtenir un particulièrement réponse ferme si vous vous êtes exprimée en quelque chose comme "norme" C " ou "C++" - la taille de stockage de données, les pointeurs, etc, est terriblement mise en œuvre de personne à charge.

Honnêtement dépend de la langue, parce que géré langages tels que le C# et le Java ou des langages de Script comme JavaScript, Python ou PHP sont enfermés dans leur méthodologie actuelle et obtenir commencé et faire quelque chose au-delà de l'avancée des choses il n'y a pas beaucoup à s'inquiéter.

Mais je suppose que vous vous posez des questions à propos des langages comme C++, C, et d'autres de niveau inférieur langues.

La plus grande chose que vous avez à vous soucier de la taille des choses, parce que dans la version 32 bits de monde, vous êtes limité à la puissance de 2^32 toutefois, dans la version 64 bits du monde, les choses deviennent de plus 2^64.

Avec 64 bits, vous avez un plus grand espace de la mémoire et de stockage dans la RAM, et vous pouvez calculer un plus grand nombre.Toutefois, si vous savez que vous êtes compilation pour les versions 32 et 64, vous devez assurez-vous de limiter vos attentes du système à la version 32 bits de monde et les limites de zones tampons et numéros.

En C (et C++) rappelez-vous de toujours utiliser l'opérateur sizeof lors du calcul de la taille du buffer pour le malloc.De cette façon, vous aurez plus d'écrire du code portable de toute façon, et cela va automatiquement prendre 64bit types de données en compte.

Dans la plupart des cas, la seule chose que vous avez à faire est de simplement compiler votre code pour les deux plates-formes.(Et c'est en supposant que vous êtes en utilisant un langage compilé;si elle ne l'est pas, alors vous n'avez probablement pas besoin de vous soucier de quoi que ce soit.)

La seule chose que je peux penser qui pourrait causer des problèmes est en supposant que la taille des types de données, ce qui est quelque chose que vous ne devriez probablement pas le faire de toute façon.Et bien sûr ce qui est écrit dans l'assemblée va causer des problèmes.

Gardez à l'esprit que de nombreux compilateurs choisir la taille de l'entier basé sur l'architecture sous-jacente, étant donné que le "int" devrait être le plus rapide numéro de manipulateur dans le système (selon certaines théories).

C'est pourquoi de nombreux programmeurs utilisent des typedefs pour la plupart de leurs programmes portables - si vous voulez que votre code fonctionne sur tout à partir de 8 bits des processeurs 64 bits des processeurs vous avez besoin de reconnaître que, dans C, de toute façon, l'int n'est pas rigidement définis.

Les pointeurs sont un autre domaine d'attention - n'utilisez pas un long, long ou long, ou un type particulier si vous touchez à la valeur numérique du pointeur de la souris - utiliser le bon de construire, ce qui, malheureusement, varie d'un compilateur de compilateur (qui est pourquoi vous avez un typedef.h fichier pour chaque compilateur que vous utilisez).

-Adam Davis

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top