* Integrateur Prestashop Aix-en-Provence
Integrateur Prestashop Aix-en-Provence
Article:
Le service exec()dans le Lions' Commentary on UNIX 6th Edition, with Source Code (en) de la version 6 d'Unix décrypte l'image digitale d'un exécutable depuis un système de fichiers. Les huit premiers octets construisent le header qui comprend la taille du programme (segment text) et les variables initialisées (segment global). Le premier terme de seize bits de ce header est mesuré à deux constantes pour définir si l'exécutable utilise des références mémoires réallouables, le système de page en lecture seule nouvellement développé ou des pages partagées pour les instructions et les données4. Dans les sixième et septième versions d'Unix, le double emploi de cette constante du naissance du header n'était pas explicité mais le bit de poids fort de cette constant était l'opcode de l'instruction de saut sur un PDP-11 (octal 000407 ou hex 0107). Dans le cas où on ajoute sept au compteur de programme d'un programme exécuté, celui-ci va utiliser le service exec() pour commencer. Depuis un buffer de l'espace noyau le service exec() émet le header du fichier exécutable (méta),en revanche l'image exécutable est affichée dans l'espace utilisateur et donc sans pouvoir utiliser la constante de saut. Les magicnumber ont alors été implantés dans l'éditeur de liens et le chargeur d'Unix ; ils ont dû être utilisés après dans les programmes de test donnés avec les versions 6 et 7 d'Unix. La constante n'est pas lue instantanément dans la version 7 ; elle est en premier lieu atée à la variable ux_mag5 et fut ensuite désignée par l'expression magicnumber. Sachant qu'il y avait alors dans cet Unix environ 10 000 lignes de code et plusieurs constantes utilisées, ce nom est plutôt curieux pour une constante, au moins autant que le commentaire2 laissé dans la partie relativement au modification de contexte de la version 6 du gestionnaire d'applications d'Unix. C'est vraisemblablement pour cela que le terme a ensuite indiqué le type d'exécutable, puis élargi aux systèmes de fichiers et étendu encore pour indiquer un exécutable utilisant un typage fort. Plusieurs de ces nombres sont issus d'un typage fort des données ou de leur multiplexage. Ils permettent aux programmes traitant l'information d'identifier les données qui suivent et notamment de distinguer le format de données utilisé. L'expression de magicnumber peut aussi se conformer à l'utilisation de constantes numériques non-nommées dans le code source d'un programme. l'usage de ces constantes transgresse les anciens principes de programmation venus de COBOL, de FORTRAN et de PL/I9, ne rend pas plus clair le choix de cette valeur10 et cause généralement des erreurs de programmation. Selon certains, la dénomination de tous les constantes rend le code plus lisible, plus compréhensible et plus facilement maintenable.