Pour répondre ta question "Comment distinguer la version 32/64 bit d'un OS du jeu d'instruction utilisé", ben on ne sait pas...
Ta réponse m'a fait me poser la question de, justement, comment le kernel le sait, lui. Je me suis dit que les binaires devaient bien avoir l'information quelque part, et comme je sais qu'ils suivent le format ELF, j'ai regardé vite fait.
A l'offset 0x12 se trouvent 2 octets qui indiquent le jeu d'instruction. Ceci dit, je doute fort que ça supporte une différentiation entre les iX86, au final, mais on peut au moins faire le distingo entre x86 et x64.
Il y a un autre champ qui indique si l'adressage se fait en 32 ou 64 bits, donc il doit y avoir un moyen pour compiler avec le jeu d'instructions 64bits mais en gardant des adresses 32, ce qui m'intéresse personnellement beaucoup (pour différentes raisons qui ne rentrent pas dans le sujet qui nous concerne ici).
Bon, pour l'auteur du sujet, je doute que ce soit très pertinent, de toute façon. D'autant qu'il faut un éditeur hexa (ou un simple coup de hd, certes) avec la doc, ou un outil spécialisé, éventuellement...
Ubuntu est plus stricte encore, leur i386 est en fait un i586/i686
C'est pas juste du i686, Ubuntu? Avec Debian qui supporterait encore le 586 en plus du 686?
En règle générale, on compile pour le dénominateur commun d'une famille d'architecture, en l' occurrence soit x86_64 a.k.a amd64 soit x86 a.k.a. IA32, et certains programmes ou certaines bibliothèques vont choisir à l'exécution un code optimisé pour tel ou tel processeur.
Les distributions binaires compilent pour des architectures et processeurs génériques. Les distributions source permettent elles de compiler en prenant en compte des optimisations et jeu d'instructions spécifiques pour le processeur sélectionné, pour être précis.
Par contre, je n'ai jamais entendu parler d'une application qui exécute une section ou l'autre de son code en fonction de l'archi... si tu as une référence, je suis super intéressé.
[^] # Re: Sauvegarde disque
Posté par freem . En réponse au message Recherche logiciel de restauration/clonage de configuration d'OS. Évalué à 2.
Ta réponse m'a fait me poser la question de, justement, comment le kernel le sait, lui. Je me suis dit que les binaires devaient bien avoir l'information quelque part, et comme je sais qu'ils suivent le format ELF, j'ai regardé vite fait.
A l'offset 0x12 se trouvent 2 octets qui indiquent le jeu d'instruction. Ceci dit, je doute fort que ça supporte une différentiation entre les iX86, au final, mais on peut au moins faire le distingo entre x86 et x64.
Il y a un autre champ qui indique si l'adressage se fait en 32 ou 64 bits, donc il doit y avoir un moyen pour compiler avec le jeu d'instructions 64bits mais en gardant des adresses 32, ce qui m'intéresse personnellement beaucoup (pour différentes raisons qui ne rentrent pas dans le sujet qui nous concerne ici).
Bon, pour l'auteur du sujet, je doute que ce soit très pertinent, de toute façon. D'autant qu'il faut un éditeur hexa (ou un simple coup de hd, certes) avec la doc, ou un outil spécialisé, éventuellement...
C'est pas juste du i686, Ubuntu? Avec Debian qui supporterait encore le 586 en plus du 686?
Les distributions binaires compilent pour des architectures et processeurs génériques. Les distributions source permettent elles de compiler en prenant en compte des optimisations et jeu d'instructions spécifiques pour le processeur sélectionné, pour être précis.
Par contre, je n'ai jamais entendu parler d'une application qui exécute une section ou l'autre de son code en fonction de l'archi... si tu as une référence, je suis super intéressé.