"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 |
<!-- 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
la page
du livre.
- Version
préliminaire téléchargeable des chapitres du livre.
href="http://groups.google.com/groups?hl=en&lr=&safe=off&group=comp.compilers">comp.compilerssur Usenet.
# petite requête
Posté par Schwarzy . Évalué à 1.
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 MetalX . Évalué à 1.
* 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 Anonyme . Évalué à 0.
[^] # Parsing Techniques
Posté par TSelek . Évalué à 1.
C'est de la bonne de 'Dam.
[^] # Re: petite requête
Posté par Paul Marques Mota . Évalué à 1.
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 Stephane Pion . Évalué à 1.
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 Schwarzy . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.