IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Pointeurs en RAM


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Par défaut Pointeurs en RAM
    Bonjour à tous

    Ma question est très simple : un pointeur sur RAM en environnement 64 bits est-il identique à un pointeur en environnement 32 bits ?

    Je précise que comme je "m'amuse" encore avec Delphi 7 sous Xp, j'ignore les rudiments de nature des Delphi orientés 64. Je vous prie de m'excuser.

    Pour être encore plus précis : j'imagine que je travaille (un jour ?) avec un Delphi 64 bits et je veux utiliser une "vieille" dll compilée avec D7. Celle-ci necéssite qu'on lui passe deux pointeurs sur des variables de stockage (string, array, stream... etc); peut-on le faire sans prendre garde comme si on était encore en D7 ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Bonjour, René

    Un exécutable 64 bits ne pourra pas utiliser une dll 32 bits car les adressages (pointeurs inclus, donc) ne sont pas compatibles (sur 8 octets au lieu de 4).
    Par contre, on peut compiler un exécutable 32 bits sur les Delphi 64 bits, qui seront eux, capables d'utiliser ces dll.
    Et on peut sûrement recompiler aisément la dll en 64 bits, pour peu qu'elle n'utilise pas d'assembleur, de transtypages héroïques et autres antiques techniques trop spécifiques du 32 bits !

    Bon code, et à bientôt !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Par défaut
    Merci Yves, bon dimanche !

    Ouais, et bien ta réponse ne me surprend pas... tu imagines bien que ma vieille dll est bourrée d'asm 32 bits. Sans en connaître d'avantage, si le pointeur est sur 8 octets au lieu de 4, la dll qui récupère cette valeur en registre 32 bits va tout droit au casse-pipe !

    Moralité : il vaut mieux re-développer la dll en syntaxe asm 64 si on veut qu'elle passe "inaperçue"; ou alors utiliser le programme complet avec ses dll tous compilés en 32...

    Bon... bin... le 64 c'est encore pas pour moi.

Discussions similaires

  1. Connaitre la taille de la RAM
    Par dway dans le forum Assembleur
    Réponses: 23
    Dernier message: 15/09/2004, 10h05
  2. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44
  3. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo