Considérations Object Pascal pour les applications multi-périphériques

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Considérations pour les applications multi-périphériques


Le type de données Extended est de 2 octets plus petit sur les systèmes Windows 64 bits

La taille du type de données Extended est différente sur Win64 et sur Win32 :

  • Sur Win64, le type Extended est un alias pour un Double, ou 8 octets.
  • Sur Win32, le type Extended est 10 octets.

Vous obtenez ainsi une précision inférieure en utilisant le type de données Extended sur Win64 par rapport à Win32. Si vos applications utilisent le type de données Extended et que la précision a une grande importance comme pour les opérations à virgule flottante, cette différence de taille peut affecter vos données.

Les valeurs très petites ou très grandes sont les plus affectées. Voici la précision des deux types de données :

  • 1x10308 IEEE Double, pris en charge par Win64
  • 1x104932 IEEE Extended, pris en charge par Win32

Si votre base de code contient le type de données Extended, vous recevrez le message de conseil : W1066 Perte de la précision à virgule flottante étendue. Réduction à Double (Object Pascal). Les opérations à virgule flottante en précision étendue sont prises en charge dans les applications 32 bits et ne le sont pas dans les applications 64 bits. Sur Win64, la précision des opérations à virgule flottante avec des variables Extended est réduite à la précision double.

L'enregistrement TExtended80Rec peut être utilisé pour travailler avec des variables à virgule flottante en précision étendue, mais seulement pour lire ou écrire en mémoire et pour effectuer des modifications de bas niveau (modification de la mantisse, de l'exposant ou du signe).

Pour de plus amples informations sur les types de données 64 bits, voir Types de données Windows 64 bits comparés aux types de données Windows 32 bits.

Problème d'alignement de pile sur OS X

Pour les applications OS X, un problème majeur est l'exigence que toutes les données mémoire aient un alignement de pile sur des frontières de 16 octets :

Migration des applications Object Pascal de Win32 vers OS X

Le tableau suivant récapitule comment les différentes plates-formes sont prises en charge par les diverses bibliothèques dans Appmethod :

   Bibliothèque \ Plate-forme         Win32             Win64              Mac OS X    

FMX

Oui

Oui

Oui

RTL

Oui

Oui

Oui

VCL

Oui

Oui

Non pris(e) en charge

Remarque : Le tableau ci-dessus n'est qu'une représentation détaillée de la prise en charge des bibliothèques pour les diverses plates-formes. Des exceptions existent dans la prise en charge RTL et VCL pour des plates-formes spécifiques.

La VCL est uniquement prise en charge sur Windows et elle ne prend pas en charge OS X. Les applications ciblant OS X doivent être construites avec FireMonkey (FMX).

Par contre, la majorité de la bibliothèque d'exécution Object Pascal (RTL) prend en charge toutes les plates-formes cible prises en charge. La RTL contient les unités System, SysUtils et IOUtils, ainsi que d'autres, qui contiennent des éléments indépendants de la plate-forme.

  • Les applications Object Pascal qui utilisent seulement la RTL (pas la VCL) fonctionnent sur OS X (et Win64) avec quelques changements.
  • Toute application Object Pascal qui utilise la VCL et/ou la RTL supporte Win32 et Win64.


Pour de plus amples informations sur la RTL, voir Utilisation de la RTL (bibliothèque d'exécution).

Pour plus d'informations sur FireMonkey, voir Plate-forme d'applications FireMonkey.

Pour de plus amples informations sur la VCL, voir Introduction à la bibliothèque des composants visuels (VCL).}}

Migration des applications Object Pascal de Win32 vers Win64

La VCL et la RTL sont prises en charge sur Win32 et Win64.

Pour le développement d'applications Object Pascal Win64, voir Développement d'applications Windows 64 bits.

Migration des applications de bureau Object Pascal en applications mobiles

Sous Win64, le mot clé 'absolute' n'est pas pris en charge dans Interop entre Object Pascal et Appmethod C++.

Si vous voulez écrire du code Object Pascal qui exécute Interop avec les compilateurs C++ améliorés par Clang, vous ne pouvez pas utiliser la directive/le mot-clé Object Pascal "absolute" dans la sectio interface d'une app Object Pascal ors de l'exécution d'Interop avec l'un quelconque des compilateurs C++ améliorés par Clang. Toutefois, vous pouvez utiliser le mot-clé "absolute" dans la section implementation.

LLVM n'offre pas de mécanisme pour l'overlay d'une variable avec une autre. Appmethod C++ suppose donc qu'un symbole unique est utilisé pour chaque variable.

Limitations d'assembleur inline sur Windows 64 bits

Si votre base de code contient du code assembleur inline, il est possible que des modifications du code soient nécessaires pour le portage sur 64 bits. Pour plus d'informations, voir les rubriques suivantes :

Voir aussi