Linkers and Loaders

Posté par  . Modéré par trollhunter.
Étiquettes :
0
18
juin
2001
Doc
Extrait :
"Le livre «Linkers and Loaders» par John R. Levine comble un manque dans la litérature sur les compilateurs et les systèmes d'exploitation en abordant les problèmes spécifiques aux outils
d'éditions de liens et chargement de programme. Bref, comment en savoir un peu plus sur les arcanes des a.out, ELF, COFF, DLL et autres «shared objects»."





























Linkers and Loaders
Auteur John R. Levine
Editeur Morgan Kaufmann Publishers
ISBN 1-55860-496-0
Pages 256
Prix Prix constaté $36.95
Rédacteur Laurent Guerby



Couverture
<!-- Ceci est a mettre comme texte de la news annoncant la revue<br/> du livre -->


Le livre «Linkers and Loaders» par John R. Levine comble un manque
dans la litérature sur les compilateurs et les systèmes d'exploitation
en abordant les problèmes spécifiques aux outils d'éditions de liens
et chargement de programme. Bref, comment en savoir un peu plus sur
les arcanes des a.out, ELF, COFF, DLL et autres «shared objects».


<!-- Fin du texte de la news -->





John R. Levine, modérateur du groupe de discussion «comp.compilers»
(probablement le plus vieux groupe modéré de USENET, et sans
changement de modérateur depuis sa création) lança courant 1998 un
appel à revue et idées pour un sujet complètement occulté par la
litérature et pourtant élément essentiel des compilateurs et des
systèmes d'exploitation : les éditeurs de liens et les chargeurs de
programmes. Ce projet a abouti fin 1999 par la publication du livre
sujet de cette revue par Morgan Kaufman.



L'approche de l'auteur est très structurée et débute par un petit
historique et une présentation générale du rôle des éditeurs de liens
et des chargeurs. Le tout suivi d'un petit exemple sur un programme C
compilé avec GCC et analysé avec objdump.



Le deuxième chapitre présente les aspects d'architecture des
processeurs, notament le jeu d'instruction et la mémoire virtuelle,
pertinents pour les logiciels d'édition de liens. En particulier le
format binaire des instructions pour SPARC, IBM 360/370 et Intel x86
sont précisés.



Le troisième chapitre présente sommairement les formats de fichier
objet utilisés de nos jours, des plus simples comme DOS COM et DOS EXE
aux plus complexes comme ELF, COFF et Microsoft PE en passant par
a.out, OS/360 et OMF d'Intel.



Les chapitres 4 à 6 couvrent les différentes étapes du processus
d'édition de liens : allocation des segments, résolution des symboles
et production d'exécutables ou de librairies.



Le chapitre 7 parle en détail de la relocation et notament du pourquoi
et du comment de la génération de code PIC «position-independant code».



Le chapitre 8 couvre le processus de chargement des fichiers
exécutables par le système d'exploitation.



Les chapitres 8 et 9 présentent les techniques de partage de code et
des librairies partagées, en particulier ELF et DLL.



Enfin le chapitre 11 étend la discussion aux problèmes posés aux
éditeurs de liens par les languages comme C++ et Java, et des
techniques comme l'édition de lien incrémentale ou les optimisations
au dernier moment. On aurait aimé un peu plus de développements, mais
pour ces sujets récents on trouve sans trop de problèmes des articles
intéressants.



Cet ouvrage couvre tous les concepts du domaine, illustre les points
importants par des exemples concréts mais bien sur ne détaille pas
l'intégralité des spécifications des formats cités, une bibliographies
des documents et sites web des plus complète est fournie dans la
section «Reference», ce qui donne un ouvrage plutôt léger et très
agréable à lire. Les illustrations sont claires, les points clés sont
marqués par des petits signes dans la marge, un résumé est présent à
la fin de chaque chapitre. Les exercices des chapitres 3 à 11
s'enchainant logiquement et forment un mini projet de relieur en perl.



En conclusion, une excellente lecture personnelle pour compléter un
cours sur les compilateurs ou systèmes d'exploitation, ou pour
structurer ses idées avant de commencer un projet impliquant ces
outils ou bien si vous voulez contribuer sérieusement aux GNU binutils
:).










Table des matières



  • Preface
  • 1. Linking and Loading
  • 2. Architectural Issues
  • 3. Object Files
  • 4. Storage Allocation
  • 5. Symbol Management
  • 6. Libraries
  • 7. Relocation
  • 8. Loading and Overlays
  • 9. Shared Libraries
  • 10. Dynamic Linking and Loading
  • 11. Advanced Techniques
  • References
  • Index




Références



Aller plus loin

  • # petite requête

    Posté par  . Évalué à 1.

    si quelqu'un pouvait présenter une liste des ouvrages indispensables sur la chaine de création de programmes (analyse lexical, sémantique, génération de p-code, optimisation du code, génération du code cible, ...), je penses que cela pourrait intéresser bcp de lecteurs de linuxfr. J'espère que c'est faisable car c'est un sujet trés vaste.

    perso, les bouquins que j'ai sont:
    - un ouvrage sur lex & yac (je l'ai pas sous la main pour le titre exacte)
    - Compilateurs, techniques, principes et outils Aho, Sethi, Ullman aux éditions InterEditions. C'est un vieux bouquin, peut-être un peu dépassé mais qui m'a bien aidé pour comprendre ce qu'est un compilateur.

    et je vais probablement compléter avec le bouquin présent.
    • [^] # Re: petite requête

      Posté par  . Évalué à 1.

      En gros, tu cherches des bouquins sur les compilos.

      * Compiler Construction, Kenneth C. Louden
      * Modern Compiler Implementation in C, Andrew W. Appel

      Et plus avance:
      * Advanced Compiler Design Implementation, Steven S. Muchnick

      (Je ne connais que les versions anglaises)

      tu trouveras aussi des infos la (les slides en particulier)
      http://www.sable.mcgill.ca/~hendren/520/(...)
    • [^] # Re: petite requête

      Posté par  . Évalué à 0.

      Pour les compilateurs superscalaire et autres il y a tjrs les livres de Michael Wolfe
    • [^] # Parsing Techniques

      Posté par  . Évalué à 1.

      Sur l'aspect parser pur et grammaires, il y a un excellent PDF que tu devrais retrouver sur google à partir de "Parsing Techniques - A Practical Guide - Dick Grune & Ceriel Jacobs".
      C'est de la bonne de 'Dam.
    • [^] # Re: petite requête

      Posté par  . Évalué à 1.

      > si quelqu'un pouvait présenter une liste des ouvrages indispensables sur la chaine de création de programmes

      John Levine le fait dans la FAQ du newsgroup:

      http://www.faqs.org/faqs/by-newsgroup/comp/comp.compilers.html(...)

      Chercher la reponse a la question: 'How can I get started with yacc and lex and compiler writing in general?'
    • [^] # Re: petite requête

      Posté par  . Évalué à 1.

      > - un ouvrage sur lex & yac
      Depuis le thread sur lex et yacc, et les conseils de certains d'aller voir ailleurs, j'ai découvert pccts.
      J'ai mis lex et yacc à la poubelle, depuis.

      http://www.antlr.org(...)

      ça génère, au choix, du C, du C++ ou du Java, et les possibilités de l'analyseur grammatical sont largement supérieures à celles de yacc.
  • # petite requête (merci !)

    Posté par  . Évalué à 1.

    merci à tout ceux qui ont répondu.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.