Section courante

A propos

Section administrative du site

Le programme de liaison (LINK)

LINK est un programme qui : combine des modules d'objets produits séparément, recherche dans les fichiers de bibliothèque des définitions de références externes non résolues, résout des références croisées externes, produit une liste affichable montrant la résolution des références externes et des messages d'erreur, produit un module de chargement déplaçable.

Des fichiers

L'éditeur de liens traite les fichiers d'entrée, de sortie et temporaires suivants 

Fichiers d'entrées

Type Extension par défaut Passer outre l'extension Produit par
Objet .REL Oui Assembleur
Objet .OBJ Oui Compilateur
Bibliothèque (Aucune) (Aucune) Compilateur
Réponse automatique (Aucune) (Aucune) Utilisateur

Fichiers de sorties

Type Extension par défaut Passer outre l'extension Utilisé par
Référencement .MAP Oui Utilisateur
Exécution .EXE Non Chargeur déplaçable (COMMAND.COM)

VM.TMP (fichier temporaire)

LINK utilise autant de mémoire que disponible pour contenir les données définissant le module de chargement en cours de création. Si le module résultant est trop volumineux pour être traité avec la quantité de mémoire disponible, l'éditeur de liens peut avoir besoin d'espace mémoire supplémentaire. Dans ce cas, un fichier temporaire appelé VM.TMP est créé sur la disquette dans le lecteur par défaut du DOS. Un message s'affiche pour indiquer le début de ce débordement vers la disquette.

Une fois qu'un tel fichier est créé, cette disquette ne doit pas être retirée avant la fin de LINK. Lorsque LINK se termine, le fichier VM.TMP est supprimé.

Si l'unité de disque par défaut du DOS contient déjà un fichier du nom de VM.TMP, il sera supprimé par LINK et un nouveau réattribué. Le contenu du fichier précédent est détruit. Vous ne devez pas utiliser VM.TMP comme l'un de vos propres noms de fichiers.

Prompts de commande

Après avoir démarré la session de l'éditeur de liens, vous répondez à une série de neuf invites. Ces invites peuvent être répondues individuellement à partir du clavier ou automatiquement via un fichier spécial sur disquette. (Voir Appel de l'éditeur de liens.)

LINK vous demande les noms des fichiers d'objet, d'exécution, de liste et de bibliothèque ; et pour les paramètres facultatifs régissant la session de l'éditeur de liens. Lorsque la session est terminée, LINK retourne sous DOS. Le prompt DOS s'affiche lorsque LINK est terminé. Si le LINK échoue, LINK renvoie un message.

Les prompts sont décrites ci-dessous dans leur ordre d'apparition. La valeur par défaut est affichée entre crochets ( [ ] ), dans la colonne Réponses, après le prompt. Les prompts non suivies d'une valeur par défaut nécessitent une réponse de votre part.

Prompt Réponses
OBJECT MODULES: filespec [filespec ...]
RUN FILE: filespec [/P]
LIST FILE: [filespec]
LIBRARIES: filespec [filespec ...]
PUBLICS: Y ou N : Y affiche toute la liste symboles globale avec les définitions.
LINE NUMBERS: Y ou N : Y inclut les numéros de ligne dans le fichier LIST.
STACK SIZE: Une valeur décimale différente de zéro définit la taille de la pile dans le fichier RUN.
LOAD LOW: Y ou N : Y entraîne le chargement du fichier RUN en mémoire insuffisante lors de son exécution
DSALLOCATION: Y ou N : Y charge les données à l'extrémité supérieure du segment de données

Remarques

OBJECT MODULES (Modules Objet)

Entrez une ou plusieurs spécifications de fichier pour les modules d'objet à lier. Si l'extension est omise, LINK utilise les extensions de nom de fichier .OBJ ou .REL. Si un module objet a une autre extension de nom de fichier, l'extension doit également être spécifiée.

Les spécifications de fichier doivent être séparées par des virgules simples (,) ou par des espaces. LINK charge les segments dans les classes dans l'ordre rencontré.

Si un module d'objet est spécifié, mais que LINK ne peut pas localiser le fichier, un prompt demande l'insertion de la disquette contenant le module spécifique. Cela permet d'inclure les fichiers OBJ et REL de plusieurs disquettes.

Pour éviter un conflit avec VM.TMP (pouvant avoir été alloué sur l'unité de disque par défaut du DOS), ces modules doivent être spécifiés comme résidant sur l'autre unité de disque dont la disquette peut être échangée en toute sécurité. Sur un système à un seul unité de disque, l'échange de disquettes ne peut se faire en toute sécurité que si VM.TMP n'a pas été ouvert. (Un message indiquera si VM.TMP a été ouvert.)

RUN FILE (Exécutez le fichier)

La spécification de fichier saisie sera créée pour entreposer le fichier Run (exécutable) résultant de la session LINK. Tous les fichiers d'exécution reçoivent l'extension de nom de fichier .EXE, même si vous spécifiez une extension. (Votre extension spécifiée est ignorée.)

En option, vous pouvez répondre à RUN FILE: avec filespec /P. Cela indique à LINK d'afficher un message à l'opérateur. Ce message demande à l'opérateur d'insérer la disquette devant recevoir le fichier d'exécution. Si l'option /P est utilisée, le fichier d'exécution doit être explicitement dirigé vers l'unité de disque autre que celui par défaut.

LIST FILE [run-filename.MAP]

Le fichier List sera placé sur la disquette qui contient le fichier Run, à moins qu'il ne soit remplacé. Le fichier List contient une entrée pour chaque segment dans les modules d'entrée (objet). Chaque entrée affiche également le décalage (adressage) dans le fichier Run.

Si vous n'entrez pas de spécification de fichier, le nom du fichier d'exécution avec l'extension par défaut .MAP est utilisé.

LIBRARIES []

Les réponses valides sont une liste de spécifications de fichiers de bibliothèque ou simplement la touche ENTER. (Appuyer uniquement sur la touche ENTER signifie qu'il n'y a pas de recherche dans la bibliothèque.) Un fichier de bibliothèque est inclus dans le paquet du compilateur.

Lorsque LINK tente de référencer un fichier de bibliothèque et ne le trouve pas, un prompt demande que l'identificateur de l'unité de disque contenant la bibliothèque soit saisi.

De 1 à 8 bibliothèques, les spécifications de fichier peuvent être saisies et doivent être séparées par des virgules simples ou des espaces.

LINK recherche les fichiers de bibliothèque dans l'ordre indiqué pour résoudre les références externes. Lorsqu'il trouve le module définissant le symbole externe, le module est traité comme un autre module objet.

PUBLICS [N]

Les seules réponses valides commencent par Y, N ou simplement la touche ENTER. (Appuyer uniquement sur la touche ENTER revient par défaut à N.)

Une réponse Y ordonne à LINK de lister tous les symboles publics (globaux) définis dans les modules d'entrée. Pour chaque symbole, LINK répertorie sa valeur et l'emplacement du décalage de segment dans le fichier Run. Les symboles sont répertoriés à la fin du fichier Liste.

LINE NUMBERS [N]

Les seules réponses valides commencent par Y, N ou simplement la touche ENTER. (Appuyer uniquement sur la touche ENTER revient par défaut à N.)

Une réponse Y ordonne à LINK d'inclure dans le fichier List les numéros de ligne et les adresses des instructions source dans les modules d'entrée.

STACK SIZE [0 bytes]

Les réponses valides sont n'importe quelle valeur décimale positive jusqu'à 65536 octets ou simplement la touche ENTER.

Si une valeur supérieure à O et inférieure à 512 est spécifiée, la valeur 512 est utilisée.

Cette réponse est utilisée pour remplacer la taille de la pile que l'assembleur ou le compilateur a fournie pour le module de chargement en cours de création. Une réponse Y ou simplement la touche ENTER spécifie que la taille de pile d'origine fournie par l'assembleur ou le compilateur doit être utilisée.

Si la taille de la pile est trop petite, les résultats de l'exécution du module de chargement résultant sont imprévisibles.

Au moins un module d'entrée (objet) doit contenir une instruction d'allocation de pile. Ceci est automatiquement fourni par les compilateurs. Pour l'assembleur, la source doit contenir une commande SEGMENT ayant le type de combinaison STACK. Si aucune instruction d'allocation de pile n'a été fournie, LINK renvoie un message :

WARNING: NO STACK STATEMENT

LOAD LOW: [N]

Les seules réponses valides commencent par Y, N ou simplement la touche ENTER. (Appuyer uniquement sur la touche ENTER revient par défaut à N.)

Une réponse Y à LINK forcera le chargeur à placer l'image d'exécution aussi bas que possible dans la mémoire. Une réponse N à LINK obligera le chargeur à placer le fichier Run aussi haut que possible sans recouvrir la partie transitoire de COMMAND.COM, occupant la zone de mémoire la plus élevée lors du chargement.

Remarque : Pour PASCAL, le "Y" est requis.

La réponse LOAD LOW est utilisée par LINK conjointement avec la réponse DSALLOCATION (décrite ci-dessous).

DSALLOCATION [N]

Les seules réponses valides commencent par Y, N, et simplement la touche ENTER. (Appuyer uniquement sur la touche ENTER revient par défaut à N.) S'il existe un groupe portant le nom de DGROUP, il sera toujours chargé plus bas que tous les autres segments du module de chargement.

Une réponse Y ordonne à LINK de charger toutes les données, définies comme étant dans DGROUP, à l'extrémité supérieure du segment de données. Au moment de l'exécution, l'espace de données commence à l'adresse la plus basse possible permettant toujours l'adressabilité à tous les éléments de données du groupe. Si la réponse LOAD LOW est N (module chargé haut), cela permet à toute mémoire disponible sous la zone spécifiquement allouée dans DGROUP d'être allouée dynamiquement par votre application et d'être toujours adressable par le même pointeur d'espace de données.

Remarque : La quantité maximale de mémoire pouvant être allouée dynamiquement par l'application sera de 64 Ko (ou la quantité réellement disponible) moins la partie allouée de DGROUP.

Une réponse N ordonne à LINK de charger toutes les données, définies comme étant dans le groupe dont le nom de groupe est DGROUP, à l'extrémité inférieure du segment de données, en commençant par un décalage de 0. La seule mémoire ainsi référencée par le pointeur d'espace de données doit être celle spécifiquement définie comme résidant dans le groupe.

Tous les autres segments de n'importe quel type dans n'importe quel GROUPE autre que DGROUP seront chargés à l'extrémité inférieure de leurs groupes respectifs, comme défini sous la réponse "N" ci-dessus.

Caractères de commande spéciaux

LINK reconnaît deux caractères de commande spéciaux :

Caractère Description
& Utilisez l'esperluette (&) pour prolonger la ligne actuelle. Pour entrer un grand nombre de réponses (chacune pouvant être très longue), entrez une esperluette à la fin de la ligne pour prolonger la ligne logique, puis continuez à entrer des réponses au prompt de commande. N'appuyez pas sur la touche ENTER tant que toutes les réponses du prompt en cours n'ont pas été saisies.
! Utilisez un seul point d'exclamation (!) suivi immédiatement de la touche ENTER à tout moment après les deux premières invites (à partir de LIST FILE : activé) pour sélectionner les réponses par défaut aux invites restantes. Cette fonction permet de gagner du temps et évite d'avoir à appuyer en permanence sur la touche ENTER.

Remarque : Une fois le point d'exclamation saisi, vous ne pouvez plus répondre aux prompts restantes pour cette session de l'éditeur de liens. Par conséquent, n'utilisez pas le point d'exclamation pour ignorer certaines invites. Pour cela, utilisez uniquement la touche ENTER.

Comment appeler le programme LINK

Appeler l'éditeur de liens

Vous pouvez appeler le programme LINK en utilisant l'une des deux options :

Option 1-Réponses de la console

Depuis votre clavier, saisissez :

LINK

L'éditeur de liens est chargé en mémoire et affiche une série de neuf invites, une à la fois, auxquelles vous devez entrer les réponses demandées.

Si vous saisissez une réponse erronée, telle qu'une spécification de fichier incorrecte ou une spécification de fichier mal orthographiée, vous devez appuyer sur CTRL+BREAK pour quitter LINK, puis redémarrer LINK. Si l'erreur a été tapée mais pas entrée, vous pouvez modifier les caractères erronés, pour cette ligne uniquement.

Option 2-Réponses automatiques

Depuis votre clavier, saisissez :

LINK fi1espec

Pour cette option, vous entrez la spécification de fichier d'un fichier de réponse automatique.

Avant d'utiliser cette option, vous devez créer le fichier de réponse automatique. Il contient plusieurs lignes de texte, dont chacune est la réponse à une invite de l'éditeur de liens. Ces réponses doivent être dans le même ordre que les invites de l'éditeur de liens définies précédemment. Si vous le souhaitez, une longue réponse peut être contenue sur plusieurs lignes en utilisant l'esperluette pour continuer la même réponse sur la ligne suivante.

L'utilisation de l'extension de nom de fichier est facultative et peut être n'importe quel nom. (Il n'y a pas d'extension par défaut.)

L'utilisation de cette option permet d'entrer la commande d'invocation LINK à partir du clavier ou dans un fichier de commandes sans nécessiter de réponse de l'opérateur.

Des crochets angulaires peuvent être inclus dans une ligne de réponse pour remplir deux fonctions :

Par exemple, le fichier de réponse automatique illustré ci-dessous contient :

Remarques

Définitions

Segment, Group et Class sont des termes apparaissant dans certains des messages d'erreur. Ces termes décrivent la fonction sous-jacente de LINK. Une compréhension des concepts définissant ces termes fournit une compréhension de base du fonctionnement de LINK.

Segment

Un segment est une zone de mémoire contiguë d'une longueur maximale de 64 Ko. Un segment peut être situé n'importe où dans la mémoire sur une limite de "paragraphe" (16 octets). Chacun des quatre registres de segment définit un segment. (Les segments peuvent se chevaucher.) Chaque adresse 16 bits est un déplacement depuis le début d'un segment. Le contenu d'un segment est adressé par un couple registre de segment/déplacement.

Le contenu de diverses parties du segment est déterminé au moment de la génération du langage machine.

Cependant, ni la taille ni l'emplacement ne sont nécessairement fixés par le générateur de langage machine car cette partie du segment peut être combinée au moment de l'édition de liens avec d'autres parties formant un seul segment.

L'emplacement ultime d'un programme en mémoire est déterminé au moment du chargement par la fonction de chargement de relocalisation fournie dans COMMAND.COM, en fonction de votre réponse au prompt LOAD LOW.



Dernière mise à jour : Dimanche, le 28 mai 2023