Previous Page Next Page

11.14 Le concept de procédures externes

Pour la suite de ce chapitre nous allons supposer que nous disposons d'un fichier PROCLIB contenant une bibliothèque de procédures et de fonctions écrites en langage assembleur.

Le système de programmation Turbo-Pascal offre à l'utilisateur la possibilité de définir lui-même des procédures externes, c'est-à-dire écrites en langage assembleur et stockées sur un fichier externe, autre que celui d'un programme ou d'une interface. Lors de l'utilisation d'une telle procédure externe, il suffit d'ajouter dans le texte du programme le prototype de la procédure qui sera complété par l'adjonction de l'attribut External qui spécifie que la procédure déclarée existe avant le début du programme:

Undisplayed Graphic

Figure 11.22 Entête d'une procédure déclarée externe

Vu la présence dans le code source du programme du prototype de la procédure externe, il sera dès lors plus facile au programmeur de rechercher la syntaxe d'appel de la procédure.

Puis, le code source d'une bibliothèque de procédures/fonctions externes (écrites en langage assembleur!), doit être assemblé en un fichier objet (extension .OBJ) [angl. object file] en utilisant un assembleur tel que Turbo-Assembler. Lors de la compilation respectivement d'un programme ou d'une interface, le fichier objet est <lié> au code respectivement du programme ou de l'interface. A cet effet le code objet du fichier objet est soumis à un programme spécial appelé éditeur de liens [angl. linker; all. Binder]. Le code objet est la traduction par le compilateur du code source tel qu'il a été écrit par le programmeur dans un langage de haut niveau en une forme qui n'est pas directement exécutable. C'est sous cette forme que les bibliothèques de procédures et de fonctions externes doivent être accessibles. L'avantage de cette technique est que le programmeur n'est pas obligé d'écrire toute une application dans un même langage de programmation. En effet, il peut choisir le langage le mieux adapté à la résolution d'un sous-problème déterminé et à la fin il peut lier ensemble les différents codes objets résultant des compilations séparées pour obtenir un programme exécutable.

Tout ceci présuppose évidemment que les différents langages de programmation utilisés produisent du code objet compatible.

En Turbo Pascal, le code objet externe disponible par exemple dans le fichier objet PROCLIB.OBJ est lié au code respectivement d'un programme ou d'une interface par l'intermédiaire de la directive de compilation $L, soit ici:

{$L PROCLIB.OBJ}

En quelque sorte, les instructions d'entrée/sortie peuvent elles aussi être considérées comme des procédures déclarées externes.

Si nous supposons que la définition de la procédure Permute (permettant de permuter deux entiers) fait partie de la bibliothèque de procédures et de fonctions externes PROCLIB, on n'aura aucune peine à construire une procédure Minimum permettant de déterminer le minimum de deux nombres entiers. On écrira directement en Turbo Pascal:

PROCEDURE Minimum ( A, B: Integer; VAR Min: Integer );

{$L PROCLIB.OBJ}

PROCEDURE Permute ( VAR A, B: Integer ); External;

BEGIN

Min := A;

IF Min>B THEN Permute( Min, B );

Writeln( Min );

END; {-- Minimum}

TERMES TECHNIQUES

• attribut External

• bibliothèque de procédures et de fonctions

• code objet

• code source

• compilateur

• éditeur de liens

• fichier objet

• procédure externe

Previous Page Next Page


© Aflo Informatique , 2003-2004