Quelle est la différence entre un code objet et un fichier exécutable?


Réponse 1:

En termes simples, le code exécutable est le code en langage machine (code binaire) qui est directement compris par l'ordinateur et l'exécute sans autre simplification nécessaire tandis que le code objet est le code produit par un compilateur ou un interprète. Il ne doit pas nécessairement être du code machine comme dans le langage C. Il peut également s'agir de code octet dans le cas du langage Java où il doit être encore simplifié en code binaire, pour être appelé code exécutable.

Ainsi, un programme en code binaire ou en langage machine peut être appelé fichier exécutable tandis que le code programme produit par le compilateur (peut être du code binaire parfois auquel cas il peut également être appelé en tant que fichier exécutable) est appelé fichier objet.


Réponse 2:

Les fichiers objets sont produits par le compilateur, un par fichier de code source. L'éditeur de liens combine ensuite tous ces éléments dans un seul fichier exécutable en résolvant les adresses d'appel de sous-programme et toutes les adresses de variable globale. L'éditeur de liens sait également où le système d'exploitation va s'attendre à ce que main () soit et le place en premier.


Réponse 3:

Le code objet comprend généralement des références symboliques qui doivent être résolues ("liées") avant que l'exécution puisse avoir lieu.

Le code exécutable est entièrement traité en langage machine: toutes les références externes sont stockées sous forme d'adresses absolues (ou enregistrent les références chargées avec des adresses absolues).

Cela étant dit, de nombreux langages modernes (peut-être même la plupart) laissent certaines références être "liées" au moment de l'exécution, même dans des fichiers dits exécutables.


Réponse 4:

Un fichier exécutable est un programme complet qui peut être exécuté directement par un système d'exploitation (en conjonction avec des bibliothèques partagées et des appels système). Le fichier contient généralement une table des matières, un certain nombre de blocs de code et de blocs de données, des données auxiliaires telles que les adresses de mémoire auxquelles différents blocs doivent être chargés, les bibliothèques partagées nécessaires, l'adresse du point d'entrée et parfois une table de symboles pour débogage. Un système d'exploitation peut exécuter un fichier exécutable plus ou moins en chargeant des blocs de code et de données en mémoire aux adresses indiquées et en y sautant.

La plupart des programmes sont écrits avec du code source divisé logiquement en plusieurs fichiers source. Chaque fichier source est compilé indépendamment dans un fichier "objet" correspondant de code machine partiellement formé connu sous le nom de code objet. Plus tard, ces "fichiers objets" sont "liés" ensemble pour former un fichier exécutable.

Les fichiers objets ont beaucoup en commun avec les fichiers exécutables (table des matières, blocs d'instructions et de données machine et informations de débogage). Cependant, le code n'est pas prêt à être exécuté. Il est plein de références incomplètes à des sous-programmes en dehors de lui-même, et en tant que tel, de nombreuses instructions machine n'ont que des adresses d'espace réservé.

L'éditeur de liens, en tant que phase finale de compilation, lira tous les fichiers objets, résoudra les références entre eux, effectuera la mise en page finale du code en mémoire qui détermine les adresses de tous les blocs de code et de données, corrigera toutes les adresses d'espace réservé avec adresses réelles et écrivez le fichier exécutable.


Réponse 5:

Le code objet est le langage exécutable codé binaire dans lequel le processeur informatique lit et exécute les micro-instructions.

D'un autre côté, vous vous interrogez sur un fichier exécutable, eh bien cela peut être beaucoup de choses, par exemple un fichier contenant tout le code (exécutable, objet) susmentionné, mais peut également être un fichier contenant un type de choses complètement différent , y compris un code exécutable bootstrap initial (tout comme le code objet), puis un morceau compressé, qui est décompressé par le code bootstrapper, et dévoile une autre partie de quoi que ce soit, même un virus.

Le code objet est également un nom utilisé pour le code compilé, qui est écrit en langage machine, mais a une structure qui doit être liée pour être convertie en code objet exécutable, comme ci-dessus.