Lors de la compilation, C produit le code objet avant le temps de liaison. Je me demande si le code objet est encore sous forme de binaire? Si oui, que s'est-il passé ensuite dans le temps de liaison?Code objet, temps de liaison en langage C
Répondre
Wikipedia dit,
En informatique, un fichier objet est une collection organisée de named objets, et généralement ces objets sont des séquences d'instructions informatiques dans un format de code machine, qui peut être directement exécuté par la CPU d'un ordinateur.
Les fichiers d'objets sont généralement produits par un compilateur à la suite du traitement d'un fichier de code source . Les fichiers objet contiennent le code compact , et sont souvent appelés "binaires".
A linker est typiquement utilisé pour générer un fichier exécutable ou d'une bibliothèque par fusion des parties de fichiers d'objets ensemble. Fichiers objets pour embarqués systèmes contiennent généralement rien mais code machine mais en général, les fichiers objet contiennent également des données pour une utilisation par le code lors de l'exécution: déplacement informations, déroulage pile informations, commentaires, symboles du programme (noms de variables et fonctions) pour des fins de liaison et/ou de débogage, et d'autres informations de débogage.
Un autre site a beaucoup d'infos plus détaillées et un diagramme utile, here: Diagram http://www.tenouk.com/ModuleW_files/ccompilerlinker001.png
Les fichiers objets tels que produits par le compilateur C contiennent essentiellement du code binaire avec des trous à chaque endroit où une adresse doit encore être inconnue (adresses de fonction d'autres fichiers - y compris les bibliothèques -, adresses de variables d'autres les fichiers auxquels on accède dans celui-ci, ...).
Il contient également une table indexée par des noms de symbole ("x" ou "_x" pour la variable x
, "f" ou "_f" pour la fonction f
). Pour chacun de ces symboles, il y a un code de statut ("défini ici", "non défini ici mais utilisé", ...) et les adresses de trous dans le code binaire qui doivent être classées avec chaque adresse quand elle devient connue.
Si vous utilisez Unix (ou gcc sous Windows), vous pouvez imprimer le tableau suivant avec la commande "nm file.o".
- 1. Comment réduire le temps de liaison pour un grand projet écrit en langage Visual C++ natif?
- 2. Liaison de données à un objet en C#
- 3. Pourquoi le langage C++ n'est-il pas proposé en langage code-behind pour asp.net?
- 4. Génération de code objet répétable C++
- 5. Comment convertir le code C# en code objet?
- 6. Temps C# en microsecondes
- 7. Liaison statique en C#
- 8. Comment utiliser IDispatch en langage C pour appeler un objet COM
- 9. Obtenir les temps de noyau en C#
- 10. Conversion d'un objet défini dans le code ASP.NET en objet créé en C#?
- 11. Fichier de langage XML C#
- 12. Apprendre le langage C++
- 13. Liaison de format de zone de texte personnalisée en C#
- 14. Vala (langage similaire à C#) compile en C?
- 15. temps de liaison de profil avec gcc/g ++ et ld
- 16. Peupler objet en Objective C
- 17. C C++ Erreur de liaison
- 18. Affiche avec les 8 phases de traduction en langage C
- 19. Liaison combobox avancée à partir du code
- 20. Problème de liaison C++
- 21. Visual Studio, Intel Visual Fortran et Visual C/C++ compilation en langage mixte
- 22. Pouvez-vous m'aider avec ce code de langage d'assemblage?
- 23. html helpers ASP.NET MVC DropDownList en .aspx en langage VB
- 24. Liaison de données - C#
- 25. couverture de code en C
- 26. Comment faire un langage d'assemblage en ligne C++ multiplateforme?
- 27. Libération de Python GIL en code C++
- 28. WPF code de temps de conception
- 29. Code de référence contenant toutes les constructions possibles en C
- 30. Prise en charge du langage C++ Visual Studio 2008?