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

 C Discussion :

qu'est ce que le code objet ?


Sujet :

C

  1. #1
    Membre éclairé Avatar de fantomas261
    Inscrit en
    Avril 2007
    Messages
    486
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 486
    Par défaut qu'est ce que le code objet ?
    Bonjour,
    la compilation d'un programme en langage C produit du code objet.
    qu'est ce que le code objet ?
    merci

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Hello,

    Le code objet produit par un compilateur, par exemple C ou assembleur, et à ne pas confondre avec la programmation orientée objet, est le code « nu » produit par ladite compilation. Le compilateur le dépose alors dans un « fichier objet », dont l'extension est généralement « *.obj » dans le monde DOS/Windows et « *.o » dans le monde Unix.

    Ces fichiers contiennent donc des données binaires repérées uniquement par quelques informations dans une section du fichier, et n'ont pour but que d'être exploités par autre chose. Ils contiennent généralement du code en langage machine mais cela peut être également des plages de données et, par extension, n'importe quelle ressource comme par exemple une image bitmap, une icône, etc.

    C'est l'éditeur de liens (linker en anglais) qui est chargé ensuite de faire la liaison entre ces différents objets lorsqu'ils se font référence entre eux et de produire le fichier final, soit la plupart du temps un exécutable.

    PS : S'agit-il d'un devoir scolaire ?

  3. #3
    Membre éclairé Avatar de fantomas261
    Inscrit en
    Avril 2007
    Messages
    486
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 486
    Par défaut
    le code objet est il le même si l'ont compile avec compilateur 64bits et 32bits ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Le « code objet » est le nom que l'on donne a ce qui est produit par le compilateur. Ce n'est qu'une appellation et c'est complètement indépendant de la plateforme avec laquelle tu travailles, qu'elle soit en 32 ou 64 bits. Ce n'est pas non plus propre au langage C.

    Il y avait des assembleurs sur les 8 bits des années 1980 qui produisaient également du code objet et des fichiers objets.

    Le terme est encore antérieur à cette époque et remonte pratiquement à l'aube de l'informatique. On parle en fait de « code objet » par opposition au « code source ».

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Le contenu des *.o est indépendant de la plateforme ? Toute la distinction se fait donc au linkage qui produira du code machine ?

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Le contenu des *.o est indépendant de la plateforme ? Toute la distinction se fait donc au linkage qui produira du code machine ?
    Non, chaque environnement utilise un format qui lui est propre. Ce que je veux dire, c'est que la notion de « code objet » par opposition au code source et, par extension, de « fichier objet » a pour ainsi dire toujours existé et suivi le même principe.

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Le contenu des *.o est indépendant de la plateforme?
    Ça se fait, mais c'est relativement rare. On peut se retrouver à faire la génération de code proprement dite à l'édition de liens (gcc le permet), à l'installation (si j'ai bonne mémoire, c'est ce qui se passe sur AS400), à l'exécution, dynamiquement (là on est dans du JIT). Mais souvent même si le code intermédiaire n'est pas du code machine a déjà des dépendances sur l'archi cible (genre taille des types, alignements) et sur le système derrière (appels systèmes, compilation conditionnelle si on a un préprocesseur, ...).

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Donc la réponse à la question :
    le code objet est il le même si l'ont compile avec compilateur 64bits et 32bits ?
    est plutôt "non", car ce sont deux compilateurs différents ?

    Quelle différence du coup entre code objet et code machine ?

  9. #9
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Bktero Voir le message
    est plutôt "non", car ce sont deux compilateurs différents ?
    Tout dépend comment tu interprètes "compilateur 64bits et 32bits". On se fout que le compilateur fonctionne en 32 ou en 64 bits, ce qui compte, c'est pour quel archi il génère son code.

    D'autres parts, il est courant de mettre dans un fichier objet des informations telles que le numéro de version du compilo utilisé.

    Quelle différence du coup entre code objet et code machine ?
    code objet c'est pas tellement dans mon vocabulaire. Fichier objet oui, c'est le résultat de la compilation. Code machine aussi. Un fichier objet va souvenir contenir du code machine plus d'autres infos (pour l'édition de liens, le déboggage, ...)

Discussions similaires

  1. Est ce que ce code est optimisé.
    Par Andry dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2009, 22h06
  2. Est ce que ce code est correct ?
    Par foot.c dans le forum Débuter
    Réponses: 6
    Dernier message: 12/05/2008, 01h49
  3. Réponses: 1
    Dernier message: 08/02/2007, 09h11
  4. [Dates] calcul de date est ce que mon code est bon?
    Par carmen256 dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2006, 11h30

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