IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Que contient le fichier objet ?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    74
    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 : 74
    Points : 53
    Points
    53
    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 sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Des information pour le linker/compilateur.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    74
    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 : 74
    Points : 53
    Points
    53
    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
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    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 le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    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
    74
    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 : 74
    Points : 53
    Points
    53
    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, 16h49
  2. [Jawin][VB]comment savoir ce que contient un objet ?
    Par blaz dans le forum API standards et tierces
    Réponses: 15
    Dernier message: 22/08/2005, 12h27
  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, 21h16
  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, 00h25

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