2016-12-05 5 views
0

Dans l'en-tête ELF, la valeur e_ident[EI_CLASS] peut être 1 ou 2, ce qui indique un système d'exploitation 32 bits ou un système d'exploitation 64 bits. Mais d'après l'histoire, nous savons que ELF est apparu pour la première fois dans Solaris 2.0, sorti en 1993. Cependant, le processeur 32 bits Pentium Pro, largement utilisé, n'est apparu qu'en 1995. Pourquoi l'en-tête ELF ne contient aucune information sur le 16 bits ou même des informations 8 bits?Pourquoi il n'y a pas d'information 16 bits dans le nombre magique ELF?

+0

@Someprogrammerdude Merci! J'ai toujours pensé que les gens utilisent l'architecture 16 bits jusqu'à Pentium. Merci encore! – JiangFeng

+0

@Someprogrammerdude vous pourriez faire cette réponse; a-t-il soin de le faire? – davmac

Répondre

6

Le premier CPU 32 bits "largement utilisé" était le Intel 80386 qui était beaucoup plus ancien.

Ensuite, nous avons l'histoire de SUN et leur architecture SPARC de partout dans le même délai que le 386.

Solaris a été développé par SUN pour leurs machines au début des années 1990, près de quand le premier 64- systèmes de bits ont commencé à apparaître réellement. ELF (acronyme de Executable and Linkable Format) a été développé à la fin des années 1980, lorsque tous les principaux variants d'Unix fonctionnaient sur des systèmes 32 bits purs ou hybrides (pensez Motorola 68000).

0

EI_CLASS n'identifie pas un "système d'exploitation", mais plutôt le modèle de mémoire. Ce paramètre définit la manière dont les informations d'adresse sont codées dans le fichier, pas nécessairement la largeur des registres cibles.

Pour les CPU PC, le chargeur de code est exécuté sur la même CPU qui exécutera le programme contenu dans le fichier ELF, donc EI_CLASS correspond au format du code. Cependant, les fichiers ELF sont également utilisés comme format de code/débogage portable, même sur les contrôleurs 8 bits et 16 bits. En outre, pratiquement toutes les CPU 16 bits peuvent adresser plus de 64 Ko de mémoire, donc EI_CLASS ne peut pas être défini sur ELFCLASS16 pour de telles cibles (en supposant qu'une telle classe existe). Pour résumer, peu importe le nombre de pointeurs de largeur, la quantité de mémoire virtuelle que vous pouvez avoir est pertinente. Bien sûr, on pourrait encore rendre les fichiers ELF plus compacts en définissant quelque chose comme ELFCLASS20 (une valeur commune pour les CPU 16 bits, y compris Intel 8086), mais, comme cela a déjà été dit, les architectures 32 bits étaient déjà répandues en 1993, donc personne n'a pris la peine de définir une telle chose.