CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[logiciel] 32 bits -> 64

iscario
iscario
Niveau 7
21 novembre 2010 à 21:13:19

Bonjour,

Juste une question d'ordre général qui concerne la programmation le passage 32 vers 64 bits.

Déjà : Un programme qui fonctionne sur un système 32 bits fonctionnera-t-il de manière systématique sur son équivalent 64 bits ? (ex ; Win 7 32bits et Win 7 64 bits)

Ensuite : Quand je code un programme, mettons en C : c'est mon compilo qui gère la notion de 32 bits / 64 bits n'est-ce pas ?
Du coup, cela ne change absolument rien pour mon code ?

Merci

guyver2
guyver2
Niveau 10
21 novembre 2010 à 21:42:30

ça ne change rien pour ton code mais les exécutables générés seront dépendant de l'architecture.

en gros le code est compatible mais les fichiers binaires ne le sont pas.

iscario
iscario
Niveau 7
21 novembre 2010 à 22:11:36

ok. Si je compile sur une archi 32 bits, ca devrait néanmoins fonctionner sur une archi 64 bits non :question: Ou c'est plus compliqué que ca ?

guyver2
guyver2
Niveau 10
21 novembre 2010 à 22:43:19

il y a peut etre une option de compatibilité 32-64 dans gcc mais de toute facon il reste le problème de compatibilité des bibliothèques que tu lies a ton programme qui doivent elles aussi etre compatible avec ton architecture.

Pour info, sur mac, les programmes "universels" contiennent en fait un fichier binaire pour chaque architectures (intel 32/64 bit et powerPC, soit 3 fichiers) afin d'etre réélements compatible

guyver2
guyver2
Niveau 10
21 novembre 2010 à 22:46:43

apres verif il y a une option -arch dans gcc qui permet de spécifier l'architecture cible mais ça m'a l'air d'etre uniquement sur mac-OS.

Sinon il est toujours possible de faire de la Cross-Compilation.

chris_27
chris_27
Niveau 10
21 novembre 2010 à 22:47:06

« Si je compile sur une archi 32 bits, ca devrait néanmoins fonctionner sur une archi 64 bits non :question: » :d) non. Sinon je ne perdrais pas mon temps à gueuler que quand on ne sait pas, il faut installer un linux 32 bits.

chris_27
chris_27
Niveau 10
21 novembre 2010 à 22:48:31

guyver2 : Ça doit être -march ailleurs.

dnob700
dnob700
Niveau 10
21 novembre 2010 à 23:19:25

c'est -m32 et -m64 sur les proco intel l'option de gcc.

Pour répondre à la question : oui un programme 32 bits fonctionne tel quel sur un processeur en mode 64 bits (i.e. il peut être exécuté). Sauf que l'environnement d'exécution n'est pas forcément le même (et même sûrement pas le même) donc un tel programme ne peut rien faire d'utile (comme faire des appels système ou utiliser des bibliothèques dynamique).
Pour compenser ça, la plupart des systèmes 64 bits fournissent des environnement d'exécution pour les programmes 32 bits qui fonctionnent plus ou moins bien.

dnob700
dnob700
Niveau 10
21 novembre 2010 à 23:21:37

aussi, contrairement à ce que dit guyver, le code aussi peut dépendre de l'architecture. Surtout dans un langage comme le C. Normalement, il y a toujours un moyen d'écrire les choses de façon à ce qu'elles ne dépendent pas (trop) de la taille des mots du processeur, mais il est aussi possible d'écire des choses absolument pas portable qui fonctionneront de manière très différentes selon qu'elles sont compilées en 32 ou en 64 bits.

kufa
kufa
Niveau 9
22 novembre 2010 à 09:31:20

Un programme qui fonctionne sur un système 32 bits fonctionnera-t-il de manière systématique sur son équivalent 64 bits ? (ex ; Win 7 32bits et Win 7 64 bits)

Comme le precise les autres d'une facon un peu plus longue, la reponse courte est: non, un programme qui fonctionne sur un systeme 32 bits ne tournera pas de maniere systematique sur son equivalent 64 bits.
Ca depends beaucoup du systeme =) Rien te garanti q'une application windows 32 bits tournera necessairement sur un windows 64 bits.
Des liens qui peuvent t'interesser:
http://en.wikipedia.org/wiki/WoW64
http://msdn.microsoft.com/en-us/library/bb427430(v=VS.85).aspx

Quand je code un programme, mettons en C : c'est mon compilo qui gère la notion de 32 bits / 64 bits n'est-ce pas ? Du coup, cela ne change absolument rien pour mon code ?

Si, si tu veux que ton code soit multi-architecture compatible, il y a des restrictions a prendre dans ton code. Comme le dis dnoob, sizeof( DWORD* ) peut etre different selon l'architecture, donc toutes les lignes du style unsigned int a = (unsigned int) &b; (conversion pointer en int) auront une grande chance de ne pas fonctionner en 64 bits; c'est l'exemple le plus classique, mais il y a d'autres choses bien entendu.

En plus du lien de la msdn cite plus haut, je te conseille une petite lecture de http://www.codeproject.com/KB/architecture/20ISSUES64BIT.aspx

_skip
_skip
Niveau 10
22 novembre 2010 à 20:45:31

Sous windows, 50% des applications que j'utilise sont du 32 bits et fonctionnent niquel. Cependant cela suppose que les libs et runtimes correspondants soient dispos.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment