Assembleurs, relocation et édition des liens

De l'ASM au programme éxécuté

a marqué ce sujet comme résolu.

Malheureusement, ce tutoriel qui était en bêta a été supprimé par son auteur.

Bonjour à tous,

J'ai commencé (il y a 3 jours, 23 heures) la rédaction d'un tutoriel dont l'intitulé est Assemblage et édition des liens.

J'aimerai obtenir un maximum de retour sur celui-ci, sur le fond ainsi que sur la forme, afin de proposer en validation un texte de qualité.

Si vous êtes intéressé, cliquez ci-dessous

Merci d'avance pour votre aide

+0 -0

J'ai terminé de lire ton tutoriel et je dois dire que, même en connaissant fort bien tout ce dont tu parles, je ne le trouve pas clair du tout. Le principal reproche que je ferais est que, à mon avis, tu as organisé la présentation à l'envers : tu suis l'ordre des opérations effectuées lors d'une compilation, alors que tu devrais suivre l'ordre des dépendances de conception, qui va en sens inverse.

L'objectif ultime d'une compilation, c'est qu'un programme soit exécuté. Il faudrait donc commencer par présenter l'exécution, comment elle fonctionne, la différence programme / bibliothèque (pas librairie) partagée, les différentes solutions proposées par les OS, et ce que ce fonctionnement pose comme contraintes sur le format des fichiers exécutables. Ensuite, tu présenterais l'édition de liens, son utilité, comment il s'adapte aux contraintes posées par la phase d'exécution, notamment en faisant subir un traitement différent aux bibliothèques et aux programmes, et ce que son propre fonctionnement pose comme contraintes sur le format des fichiers objets et bibliothèques statiques. Puis, dans la suite logique, tu fais la même chose avec le logiciel d'assemblage, qui doit composer avec les contraintes imposées par l'éditeur de lien, etc.

Ensuite, je te trouve très vague dans ton explication de la traduction d'une ligne de code assembleur en code machine : en résumé, tu dis qu'il y a plusieurs éléments et que chaque élément est traduit, ce qui s'apparente à une lapalissade, mais étalée sur 40 lignes. Je pense qu'il y aurait un intérêt à montrer précisément et avec des exemples tirés de plusieurs ISA différentes comment l'assembleur devient du code machine, ce qui est loin d'être aussi simple qu'il y paraît. En particulier, le code machine x86 est particulièrement crade, et cela me semble intéressant de montrer le vrai défi que représente sa génération depuis de l'assembleur compréhensible.

+0 -0

Je vais essayer de tenter l'approche que tu me suggère, mais je parie que ce sera très difficile à rédiger. Je vais voir ce que je peux faire.

Pour ce qui est de donner des exemples de traduction ligne de code ASM -> code machine, je vais voir, mais cela me forcerait à introduire plusieurs dizaines de paragraphes sur l'encodage machine des instructions MIPS/ARM/x86/etc. Et cela ne me plaît pas vraiment, surtout si je dois introduire des corner cases

A défaut de suivre immédiatement tes conseils, j'ai modifié le tutoriel dans l’après-midi, à partir de ma première approche. La nouvelle version est en bêta dans le message qui devrait suivre.

Dans la mesure où ta nouvelle version a beaucoup changé par rapport à la précédente, attends de voir si cette nouvelle mouture altère ma position à son sujet avant de remanier toute l'organisation de ton tuto. Ce soir, j'avance la rédaction de mon tuto pour le concentré de savoir, donc je ne pourrai pas m'occuper du tien.

En tout état de cause, ma proposition de t'aider dans la rédaction tient toujours, d'autant plus si tu rencontres des difficultés en raison de mes suggestions.

+0 -0
Ce sujet est verrouillé.