1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2013
    Messages : 65
    Points : 50
    Points
    50

    Par défaut Que contient le fichier objet ?

    Bonjour,

    j'ai fait le programme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .section	.text
    .globl	_start
    _start :
    	movl	$1, %eax
    	cpuid
    	movl	$1, %eax
    	movl	$0, %ebx
    	int	$0x80
    Après l'extraction de son fichier objet :
    as -o output.o test.s
    j'ai régardé la taille de ce fichier à l'aide de la commande suivante :
    ls -l output.o
    j'ai trouvé que sa taille est de 484 octets.

    L'affichage du fichier à l'aide de la commande suivante :
    objdump -S output.o
    donne le résultat :
    output.o: file format elf32-i386


    Disassembly of section .text:

    00000000 <_start>:
    0: b8 01 00 00 00 mov $0x1,%eax
    5: 0f a2 cpuid
    7: b8 01 00 00 00 mov $0x1,%eax
    c: bb 00 00 00 00 mov $0x0,%ebx
    11: cd 80 int $0x80
    D'où la question : en sachant que le fichier objet contient juste ces informations-là, il doit être de taille qui ne dépasse pas 85 octets, en considèrant qu'il y a 5 instructions, et que chaque instruction comporte au maximum 17 octets selon "IA-32".
    Qu'est ce qu'il y a dans les autres octets alors ?

    Merci pour votre réponse.

  2. #2
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 120
    Points : 6 052
    Points
    6 052

    Par défaut

    Des information pour le linker/compilateur.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2013
    Messages : 65
    Points : 50
    Points
    50

    Par défaut

    la taille de l'exécutable il même est de 460 octets !!
    j'ai cru que l'exécutable ne contient que les instructions !!
    une explication s'il vous plaît.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    7 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 7 477
    Points : 16 081
    Points
    16 081

    Par défaut

    Ton fichier objet est au format .ELF, format normalisé. Ce n'est pas juste les opcodes de tes instructions.
    En plus de la section code, il va contenir à part une section pour les données (en gros les variables, les chaines de caractères, etc.).

    Il va contenir aussi les noms des fonctions exportables si il y en a (tes fonctions qui seront accessibles depuis un autre fichier fichier objet), les fonctions à importer depuis les bibliothèques externes si il y en a.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre éprouvé Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    mai 2010
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : mai 2010
    Messages : 339
    Points : 1 159
    Points
    1 159

    Par défaut

    Bonjour,
    Un fichier objet est un fichier qui contient le résultat de l'assemblage ou d’une compilation elle contient donc:
    • Des portions de programme en code machine exécutable
    • Des zones de données avec leurs valeurs initiales
    • Des tables de symboles pour les adresses exportées :

      • points d'entrées de fonctions contenues dans l'objet
      • adresses de variables statiques définies dans l'objet
    • Des tables pour les symboles non résolus (à importer) :

      • points d'entrées de fonctions appelées depuis cet objet ou autre objet
      • adresses de variables statiques externes référencées depuis cet objet ou autre objet


    Quant au fichier exécutable, c’est un fichier qui constitue le programme lui-même. Plus précisément et en détail: Un programme exécutable dit fichier exécutable voir programme est en réalité une collection d'instructions et de données conservées dans un fichier ordinaire sur le disque dur et identifiées par (votre)/ le système d'exploitation en tant qu'exécutable.

    Aux finales:
    • Un programme exécutable est une collection d'instructions et de données conservées dans un fichier ordinaire sur le disque dur et identifiées par le système d'exploitation en tant qu'exécutable.
    • Un fichier objet est un fichier qui contient le code nécessaire à la définition des variables, fonctions, etc. possède une table des objets qu'il définit et des objets externes qu'il utilise. (tables de symboles pour les adresses exportées et des tables pour les symboles non résolus). La table des des objets externes qu'il utilise sont des code (pour faire simple) qui font références à des fichiers externes.


    à bientôt
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2013
    Messages : 65
    Points : 50
    Points
    50

    Par défaut

    merci mes amis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/04/2010, 17h49
  2. Réponses: 15
    Dernier message: 22/08/2005, 13h27
  3. éxécution d' un programme >> que contient la ram ???
    Par bob_sapp dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 18/01/2004, 22h16
  4. Rafraichissement de la fiche ainsi que de tous les objets
    Par portu dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/01/2004, 01h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo