Structure d'un programme

Structure d'un programme - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-04-2005 à 17:25:42    

Bonjour !
J'étudie en ce moment le fonctionnement d'un programme
et sa structure au niveau binaire. J'ai plusieurs question que je me pose...
 
1- Pourquoi lorsque j'ouvre un programme dans un editeur
   hexadécimal je peux voir que celui-ci contient plusieurs
   fragment de code constituer seulement de 00
   qui ne correspond ni à des instructions ni des données ?
   Pourquoi reste t-il de la mémoire inutilisée dans un programme
   executable ?
 
2- Où ce trouve les données des ressources (boîte de dialogue,
   menus...) et le segment de donnée dans un programme (chaîne de
   caractères, constante...) ?
   Car lorsque j'édite mon programme dans un éditeur hexadécimal
   il n'y a aucune trace de tout cela...
 
3- Où ce trouve le point d'entrée d'un programme ?
 
Merci pour votre aide =)

Reply

Marsh Posté le 03-04-2005 à 17:25:42   

Reply

Marsh Posté le 03-04-2005 à 17:34:27    

Bonjour,
 
pour vraiment étudier un binaire, il faut que tu te serves de commandes tel que objdump ou nm ....

Reply

Marsh Posté le 03-04-2005 à 18:07:51    

Et puis c'est pas la bonne cat.

Reply

Marsh Posté le 05-04-2005 à 04:42:10    

Un fichier binaire c'est pas seulement le code et les données, c'est aussi un ensemble compliqué de structures qui donnent le point d'entrée, l'adresse des symboles importés et exportés, les données de relocation pour le binder, eventuellement des infos de debuggage tel que le mapping instruction/numero de lignes... Tout ceci est défini précisément, par exemple par le format ELF sous linux ou XCOFF/XCOFF64 sous AIX. Certaines de structures ont des champs optionels, des champs de padding, des champs inutililsés (réservés pour un usage futur)... qui peuvent être à 0.
 
Maintenant, le code lui-même peut contenir des zones à 0. Par exemple sous AIX, il y a quelques 0 à la fin de chaque routine, entre la dernière instruction et la "trace back table", une zone générée par le compilateur, qui donne un certain nombre d'informations sur la routine.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed