Les premiers pas
Le compilateur Pascal fonctionne sous les deux systèmes d'exploitation Cray : COS et UNICOS.
Le fichier source des instructions Pascal reste pratiquement le même quel que soit le système d'exploitation. Les principales différences entre l'utilisation de Pascal sous COS et sous UNICOS concernent la manière dont le compilateur est appelé et dont la tâche est exécutée, car COS est principalement un système d'exploitation par lots et UNICOS est principalement interactif.
Utilisation de Pascal sous COS
Une tâche Pascal typique sur le système d'exploitation COS contient les fichiers suivants :
- Un fichier JCL (langage de contrôle de tâche) d'instructions de contrôle COS.
- Un fichier source d'instructions Pascal
- Un ou plusieurs fichiers de données (facultatif)
Les indicateurs de fin de fichier (EOF) séparent les fichiers les uns des autres. Un indicateur de fin d'ensemble de données (EOD) suit le dernier fichier. (La représentation réelle des indicateurs de fin de fichier et de fin d'ensemble de données dépend de l'ordinateur frontal.) Ensemble, ces fichiers constituent un ensemble de données de tâche nommé $IN par COS. La figure suivant montre un ensemble de données de tâche COS avec un fichier de données au format de jeu de cartes :
L'ensemble de données contenant la tâche est généralement soumis au système informatique Cray pour traitement via un ordinateur frontal. (La méthode de soumission d'une tâche dépend de l'ordinateur frontal.)
L'ensemble de données de sortie d'une tâche (nommé $OUT par défaut) est renvoyé à l'ordinateur frontal lorsque la tâche est terminée. L'ensemble de données de sortie de la tâche comprend une liste de programmes (par défaut), toute sortie créée par la tâche étant écrite dans le fichier OUTPUT et le fichier journal de la tâche.
Fichier JCL
Un simple travail Pascal peut contenir les instructions de contrôle COS suivantes dans son fichier JCL :
JOB,JN=TEST. ACCOUNT,AC=... PASCAL. SEGLDR,GO. /EOF |
L'instruction JOB est une instruction obligatoire définissant le travail pour COS. Au minimum, elle doit contenir un paramètre IN pour attribuer un nom au travail.
L'instruction de contrôle ACCOUNT présente le numéro de compte de l'utilisateur, pouvant être requis par un site avant que l'accès au système ne soit accordé.
L'instruction PASCAL provoque le chargement et l'exécution du compilateur Pascal. Comme aucun ensemble de données d'entrée n'est spécifié comme paramètre dans cet exemple, le compilateur recherche les instructions source Pascal après l'indicateur de fin de fichier, /EOF. Consultez la sous-section suivante pour une description des paramètres disponibles sur l'instruction de contrôle PASCAL. Le résultat de la compilation dans cet exemple est un programme binaire exécutable.
L'instruction SEGLDR avec le paramètre GO charge et exécute le programme binaire. Elle accède également automatiquement à la bibliothèque d'exécution Pascal, $PSCLIB.
Instruction de contrôle Pascal COS
L'instruction de contrôle PASCAL appelle le compilateur Pascal sous COS. Vous sélectionnez les paramètres du compilateur soit explicitement en les listant dans l'instruction de contrôle, soit implicitement en acceptant les valeurs par défaut. Tous les paramètres sont facultatifs et ont des valeurs par défaut. Le format de l'instruction de contrôle PASCAL est le suivant :
PASCAL[,I=idn] [,L=ldn] [,B=bdn] [,O=list][,CPU=list]. |
Paramètres
Nom | Description | ||
---|---|---|---|
I=idn | Spécifie l'ensemble de données contenant le code source Pascal. idn est le nom par lequel le code source est référencé dans COS. La valeur par défaut est $IN. | ||
L=ldn | Spécifie l'ensemble de données devant recevoir la sortie de liste du travail. La valeur par défaut pour ldn est $OUT. Si L=0 est spécifié, toutes les sorties de liste, à l'exception des messages d'erreur fatale, sont supprimées. Les messages d'erreur fatale sont écrits dans $OUT si L=0. | ||
B=bdn | Spécifie l'ensemble de données devant recevoir les modules de chargement binaire générés par le compilateur. bdn est le nom par lequel les modules de chargement binaire sont référencés dans COS. La valeur par défaut est $BLD. | ||
O=list | Spécifie les options du compilateur, séparées par deux points, en vigueur au début de la compilation. Les directives du compilateur placées dans les commentaires du programme Pascal remplacent les paramètres initiaux. Pour plus d'informations sur les directives du compilateur, voir Directives du compilateur plus loin dans cette section. Comme indiqué dans le tableau suivant, les valeurs par défaut sont les suivantes :
|
||
CPU=list | Spécifie les caractéristiques du système informatique Cray pour lequel Pascal doit générer du code. Le format de la commande CPU est le suivant :
Le primaire peut être l'un des suivants : | ||
Machine destinataire | Description | ||
CRAY-X4 | Génère du code pour un CRAY X-MP à quatre processeurs. | ||
CRAY-X2 | Génère du code pour un CRAY X-MP à double processeur. | ||
CRAY-X1 | Génère du code pour un processeur unique CRAY X-MP. | ||
CRAY-XMP | Génère du code pour un CRAY X-MP monoprocesseur fonctionnant également sur les CRAY X-MP à quatre et deux processeurs. | ||
CRAY-1M | Génère du code pour un CRAY-1 Model M | ||
CRAY-1S | Génère du code pour un CRAY-1 Model S | ||
CRAY-1B | Génère du code pour un CRAY-1 Model B | ||
CRAY-1A | Génère du code pour un CRAY-1 Model A | ||
CRAY-1 | Génère du code pour un modèle CRAY-1 A s'exécutant également sur les modèles CRAY-1 B, S et M. | ||
characteristic peut être l'un des traits suivants : | |||
Trait | Description | ||
EMA | Force Pascal à générer des instructions de chargement immédiat du registre A de 24 bits, si nécessaire, et permet l'utilisation de blocs communs de plus de 4 millions de mots. | ||
NOEMA | Désactive la génération d'instructions de chargement immédiat du registre A de 24 bits et interdit l'utilisation de blocs communs supérieurs à 4 millions de mots. | ||
CIGS | Active l'index compressé et la collecte/dispersion. | ||
NOCIGS | Désactive l'index compressé et la collecte/dispersion. | ||
VPOP | Permet le remplissage et la parité des vecteurs. | ||
NOVPOP | Désactive la population vectorielle et la parité. | ||
READVL | Active les instructions de lecture de longueur de vecteur | ||
NOREADVL | Désactive les instructions de lecture de longueur de vecteur. | ||
MEMSIZE | Le format de l'option MEMSIZE est le suivant :
MEMSIZE est n * 1024 mots pour nK et n * 1048576 mots pour nM. |
||
BDM | Active la mémoire bidirectionnelle. | ||
NOBDM | Désactive la mémoire bidirectionnelle | ||
L'option CPU ne peut pas être spécifiée avec un système informatique CRAY-2. |
Utilisation de Pascal sous UNICOS
Étant donné qu'UNICOS est un système d'exploitation interactif, vous n'avez pas besoin d'inclure un fichier JCL avec les instructions source Pascal comme c'est le cas avec COS. En fait, UNICOS ne prend pas en charge les ensembles de données multifichiers. Les instructions source et les données se trouvent chacune dans des fichiers séparés. Au lieu du fichier JCL, vous entrez les commandes nécessaires pour compiler, charger et exécuter votre programme sous forme de commandes UNICOS sur votre terminal.
Les commandes suivantes montrent comment exécuter un programme Pascal sur UNICOS. (Le $ est le prompt UNICOS par défaut.)
$ pascal -i test.p $ ld a.o $ a.out <test.data |
La première commande appelle le compilateur Pascal, compilant les instructions source trouvées dans le fichier test.p et génère un fichier exécutable avec le nom de fichier par défaut a.o. Si test.p ne se trouve pas dans le répertoire courant, vous pouvez spécifier un nom de chemin.
La commande ld charge le fichier a.o à partir de la compilation et le nomme a.out. La commande a.out, avec le fichier de données test.data en entrée, exécute le programme binaire.
Ligne de commande Pascal de UNICOS
La ligne de commande Pascal appelle le compilateur Pascal sous UNICOS. Vous sélectionnez les paramètres du compilateur soit explicitement en les listant sur la ligne de commande, soit implicitement en acceptant les valeurs par défaut. Tous les paramètres sont facultatifs et ont des valeurs par défaut. Le format de la ligne de commande Pascal est le suivant :
pascal -i idn -1 ldn -b bdn -o list |
Paramètres
Nom | Description | ||
---|---|---|---|
-i idn | Spécifie le fichier contenant le code source Pascal. Lorsque idn n'est pas un nom de chemin complet, le fichier d'entrée est par défaut un répertoire de travail. La valeur par défaut est stdin. | ||
-l ldn | Spécifie le fichier recevant la sortie de la liste du travail. Si -l 0 est spécifié, toutes les sorties de la liste sont supprimées. La valeur par défaut est stdout. | ||
-b bdn | Spécifie le fichier recevant les modules de chargement binaires générés par le compilateur ; la valeur par défaut est a.o. | ||
-o list | Spécifie les options du compilateur, séparées par des virgules, en vigueur au début de la compilation. Les options du compilateur disponibles sous UNICOS sont généralement les mêmes que celles disponibles sous COS. Le tableau précédent indique les différences entre les systèmes informatiques CRAY-2, CRAY X-MP et CRAY-1 et entre COS et UNICOS.
Les directives du compilateur placées dans les commentaires du programme Pascal remplacent les paramètres initiaux. Les valeurs par défaut sur un système informatique CRAY-1 ou CRAY X-MP exécutant UNICOS sont les suivantes :
Les valeurs par défaut d'un système informatique CRAY-2 sont les suivantes :
|
Directives du compilateur
Les directives sont transmises au compilateur Pascal de deux manières :
- En tant qu'arguments du paramètre 0 (options) de l'instruction de contrôle PASCAL.
- Dans les commentaires du code source Pascal (restreint pour certaines directives).
Le format d'une directive de commentaire est le suivant :
comment-directive = "(*#" directive { ":" directive } [ " " comment ] "*)" |
Le texte suivant la directive et précédant le symbole fermant le commentaire est traité comme un commentaire.
Exemples de formats :
- Dans l'instruction de contrôle PASCAL : PASCAL,O = X+:L+:BREG = 14.
- Dans un commentaire : (*#X+:L+:BREG=14 *)
Le tableau suivant décrit toutes les options du compilateur. En général, une option suivie d'un signe plus active cette option, et une option suivie d'un signe moins la désactive. Certaines directives incluses dans les commentaires source sont ignorées si elles apparaissent après les mots-clefs PROGRAM et MODULE. Les directives et commentaires suivant le point final d'une unité de compilation sont attachés au programme ou au module suivant, le cas échéant. Le tableau suivant indique les directives ne pouvant pas être utilisées dans un programme ou un module par un astérisque (*) dans la colonne intitulée restreint.
Option | Restreint | Par défaut | Action |
---|---|---|---|
A | A- | A+ : Interrompt le travail à la fin de l'étape de compilation si des erreurs de compilation sont détectées. | |
A- : Continue le travail même si des erreurs sont rencontrées lors de la compilation. | |||
BP | BP- | BP+ : Active la vérification des points d'arrêt en appelant la routine de bibliothèque d'exécution P$DBP avant chaque instruction. | |
BP- : Désactive la vérification des points d'arrêt | |||
BREG | * | BREG=8 | BREG=n : Alloue n registres B aux n premières variables utilisateur déclarées avec VAR dans un programme ou un module. Les variables pouvant être allouées aux registres B incluent les pointeurs, 124, CHAR et tout autre type simple pouvant s'insérer dans un registre B 24 bits, mais pas les booléens. Tous les registres B disponibles non alloués aux variables de niveau programme ou module sont réservés à l'utilisation par les variables au niveau des portées internes. La limite à n dépend du nombre de procédures et de paramètres ; le compilateur accorde autant de requêtes que possible. BREG=0 implique que tous les registres B sont réservés à une utilisation non globale. Les systèmes informatiques CRAY-2 utilisent les registres Band T en les mappant dans le bloc commun local LOCAL@CB. Jusqu'à 128 registres B et T peuvent être spécifiés. La valeur par défaut est de huit registres Band T globaux, le reste du bloc étant désigné comme non global. |
BREG- : N'utilise aucun registre B pour les variables utilisateur. | |||
BT | BT- | BT+ : Génère des appels aux routines FLOWTRACE pour obtenir une liste FLOWTRACE à la sortie normale du programme. | |
BT- : Ne génère pas d'appels aux routines FLOWTRACE | |||
C | * | C- | C+ : Active les listes pseudo-CAL |
C- : Désactive les listes de pseudo-CAL | |||
D | * | D+ | D+ : Génère des données pour un vidage si le programme s'arrête pendant l'exécution. |
D- : Ne génère pas de données pour un vidage. | |||
DEBUG | * | DEBUG- | DEBUG+ : Contrôle la valeur de la constante booléenne prédéfinie $DEBUG. $DEBUG=TRUE uniquement lorsque DEBUG+ est spécifié. |
DEBUG- : Spécifie que $DEBUG=FALSE | |||
DM | * | DM0 | DMn : Définit le mode de débogage, déterminant les adresses de code enregistrées dans la table des symboles de débogage et le degré d'optimisation, de vectorisation et de planification pouvant se produire. Les adresses de code sont utilisées par les outils de vidage post-mortem pour identifier l'endroit où le programme s'est arrêté. Avec n>1, l'optimisation scalaire et la vectorisation automatique sont désactivées, la planification est limitée (car il y a plus d'étiquettes et la planification ne se produit qu'entre les étiquettes), et l'élimination du code mort et des procédures mortes est supprimée. |
DM0 : Supprime la table des symboles de débogage | |||
DM1 : Fournit un support de débogage minimal dans la table des symboles de débogage : informations sur les types, les variables, les constantes, l'utilisation de variables non locales dans les procédures et les adresses des étiquettes définies par l'utilisateur et des points d'entrée de procédure. | |||
DM2 : Fournit un support de débogage intermédiaire dans la table des symboles de débogage : tout ce qui est inclus dans le mode minimal, plus les adresses des étiquettes générées par le compilateur dans les instructions structurées. | |||
DM3 : Fournit une prise en charge complète du débogage dans la table des symboles de débogage : tout ce qui est inclus dans le mode intermédiaire, plus l'adresse de chaque instruction. | |||
F | n/a | F : Force l'éjection d'une page dans la liste. Ne peut pas être utilisé dans l'instruction de contrôle. | |
H | H2 | Hn : Définit les exigences en matière d'espace mémoire de tas (allocation dynamique) en plus de l'espace de mémoire de tas utilisé pour la pile initiale. n est spécifié en unités octales de 1 000 mots. La valeur par défaut de H2 spécifie 20008 (1 02410) mots dans l'espace mémoire de tas. | |
H+n | H+24 | H+n : Augmente la mémoire du tas en unités octales de 1 000 mots lorsque le tas manque d'espace libre et doit demander de la mémoire supplémentaire au système d'exploitation. La valeur par défaut de H+24 spécifie qu'un minimum de 24 0008 (10 24010) mots sont demandés pour chaque extension de tas. Si l'incrément de tas est nul, une erreur fatale se produit lorsque le tas manque d'espace libre. Le paramètre H+n ne peut pas être spécifié avec un système informatique CRAY-2. | |
ISO | * | Off | ISO : Désactive les extensions CRI de la norme ISO niveau 1 Pascal et génère des messages d'erreur si des extensions sont rencontrées. Si ISO n'est pas spécifié (valeur par défaut), les extensions de la norme sont activées. |
L | L+ | L+ : Affiche une liste des sources du programme | |
L- : Supprime la liste source du programme. (Si le paramètre L de l'instruction de contrôle PASCAL est défini sur 0, O=L- est implicite.) | |||
O | * | O+ | O+: Permet toutes les optimisations |
O- : Désactive toutes les optimisations | |||
On : Permet l'optimisation avec le facteur de réglage spécifié par n (1 ≤ n ≤ 9). Des facteurs de réglage élevés augmentent le temps de compilation mais peuvent améliorer le code généré. | |||
P | P- | P+ : Éjecte une page avant chaque routine afin qu'aucune page ne contienne plus d'une routine. | |
P-: N'éjecte pas une page avant les routines | |||
P24 | * | P24 | Utilise des pointeurs 24 bits dans les structures compressées ; la valeur par défaut pour les systèmes informatiques CRAY-1 et CRAY X-MP. |
P32 | * | P32 | Utilise des pointeurs 32 bits dans des structures compressées ; la valeur par défaut pour les systèmes informatiques CRAY-2. |
R | R+ | R+ : Génère du code pour effectuer des vérifications de l'intervalle. | |
R- : Ne génère pas de code pour les vérifications de l'intervalle. R+ est identique à RA+:RR+:RP+:RS+:RL+, et R- est identique à RA-:RR-:RP-:RS-:RL-. | |||
RA | RA+ | RA+ : Génère du code pour vérifier les index de tableau | |
RA- : Ne génère pas de vérifications d'index de tableau | |||
RL | RL+ | RL+ : Génère du code pour vérifier la compatibilité des formes (les tableaux doivent posséder le même nombre de dimensions et les dimensions correspondantes doivent avoir la même taille) dans les expressions de tableau au moment de l'exécution. | |
RL- : Ne génère pas de code pour vérifier la compatibilité des formes dans les expressions de tableau. | |||
RP | RP+ | RP+ : Génère du code pour effectuer des contrôles de validité d'exécution complets sur les accès aux pointeurs. | |
RPN : Génère du code pour vérifier les pointeurs uniquement pour les valeurs nulles au moment de l'exécution. | |||
RP- : Ne génère pas de code pour les vérifications de pointeur | |||
RR | RR+ | RR+ : Génère des contrôles d'affectation de sous-intervalle. | |
RR- : Ne génère pas de contrôles d'affectation de sous-intervalle. | |||
RS | RS+ | RS+ : Génère du code pour vérifier l'utilisation de l'ensemble. | |
RS- : Ne génère pas de code de vérification d'ensemble. | |||
RV | RV- | RV+ : Génère du code pour effectuer la vérification des variantes. | |
RV- : Ne génère pas de code pour la vérification des variantes. | |||
R^ | n/a | R^ : Enregistre les paramètres actuels des options R pour la restauration avec l'option R*. RA ne peut pas apparaître dans l'instruction de contrôle. | |
R* | n/a | R* : Restaure les paramètres des options R avec ceux précédemment enregistrés avec l'option RA. R* ne peut pas apparaître sur l'instruction de contrôle. | |
S | * | S4 | Sn : Définit les exigences en matière d'espace mémoire de la pile. n est spécifié en unités octales de 1 000 mots. La valeur par défaut de S4 spécifie 40008 (2 04810) mots dans l'espace mémoire de la pile. Le paramètre S ne peut pas être spécifié avec un système informatique CRAY-2. |
S+n | S+4 | S+n : Augmente la mémoire de la pile en unités octales de 1 000 mots. La valeur par défaut de S+4 spécifie que lorsque la pile est pleine, 40008 mots supplémentaires (2 04810) sont ajoutés à la pile. Si l'incrément de la pile est nul, un dépassement de capacité de la pile provoque une erreur fatale. Le paramètre S+n ne peut pas être spécifié avec un système informatique CRAY-2. | |
ST | ST- | ST='string' : Inclut une ligne de sous-titre contenant les 72 premiers caractères de la chaîne spécifiée comme deuxième ligne de l'entête de page. La directive n'effectue aucune modification de caractère (suppression des espaces ou conversion en majuscules). | |
ST- : N'inclut pas de ligne de sous-titre dans l'entête de la page. | |||
T | T+ | T+ : Génère du code pour la vérification du débordement de la pile. | |
T- : Ne génère pas de code pour la vérification de la pile. Si la vérification du dépassement de pile est désactivée, la pile utilisateur ne s'agrandit pas et peut écraser la mémoire de tas. | |||
TREG | * | TREG=8 | TREG=n : Alloue n registres T aux n premières variables utilisateur déclarées avec VAR dans un programme ou un module. Les variables pouvant être allouées aux registres T incluent les entiers, les booléens et toute variable simple définie par l'utilisateur dont le type indique qu'elle peut tenir dans un registre T 64 bits. Tous les registres T disponibles n'étant pas alloués aux variables de niveau programme ou module sont réservés à l'utilisation par les variables au niveau des portées internes. Les systèmes informatiques CRAY-2 utilisent les registres Band T en les cartographiant dans le bloc commun local LOCAL@CB. Jusqu'à 128 registres B et T peuvent être spécifiés. La valeur par défaut est de huit registres Band T globaux, le reste du bloc étant désigné comme non global. |
TREG : N'utilise aucun registre T pour les variables utilisateur. | |||
U | U- | U+ : Limite la saisie à 72 colonnes significatives (UPDATE) | |
U- : Limite la saisie à 120 colonnes significatives. | |||
Un : Limite la largeur de la source d'entrée à n colonnes significatives ; les valeurs pour n peuvent aller de 1 à 140. | |||
V | * | V+ | V+ : Tente de vectoriser automatiquement les boucles FOR. |
V- : Ne vectorise pas les boucles FOR. | |||
VI | n/a | VI : Ignore les dépendances vectorielles potentielles lors de la vectorisation de la boucle FOR suivante. VI ne peut pas apparaître dans l'instruction de contrôle. | |
VN | n/a | VN : Ne vectorise pas la prochaine boucle FOR. VN ne peut pas apparaître dans l'instruction de contrôle. | |
X | * | X- | X+ : Collecte des informations de référence croisée globales. |
X- : Ne collecte pas d'informations de référence croisée. X+ est identique à XV+:XP+ et X- est identique à XV-:XP-. | |||
XI | * | XI- | XI+ : Inclut les informations d'identification dans la liste. |
XI- : N'inclut pas les informations d'identification dans la liste. | |||
XP | * | XP- | XP+ : Génère une référence croisée de procédure globale. |
XP- : Ne génère pas de référence croisée de procédure globale. | |||
XV | * | XV- | XV+ : Génère une référence croisée de nom global. |
XV- : Ne génère pas de référence croisée de nom global. | |||
Z | * | Z+ | Z+ : Génère du code réentrant |
Z- : Génère du code n'étant pas nécessairement réentrant. |
Exemples :
PASCAL,I=PASCJOB,L=LISTPAS,O=A+:D+:X+:P+:U+. |
Cette instruction indique au compilateur que le code source se trouve dans le fichier PASCJOB. La sortie de la liste va dans le fichier LISTPAS, tandis que la sortie binaire va dans le fichier par défaut $BLD. Les options du compilateur spécifiées par le paramètre 0 empêchent le programme de s'exécuter si une erreur de compilation est détectée, fournissent des informations de débogage pour les retours en arrière de la pile, activent la liste de références croisées, placent un saut de page au début de chaque procédure et fonction et limitent les lignes d'entrée à 72 colonnes. Les valeurs par défaut sont acceptées pour les autres options du compilateur.
PASCAL,O=ISO:H+24:S+12:V+:Z+. |
Cette instruction accepte les noms de fichiers par défaut pour l'ensemble de données d'entrée, l'ensemble de données de liste et l'ensemble de données binaire. L'argument ISO du paramètre a désactive toutes les extensions fournies par CRI. Les autres options du compilateur augmentent l'espace mémoire du tas de 24 0008 mots, augmentent la taille de la pile de 12 000 8 mots, activent la vectorisation automatique des boucles FOR et activent la génération de code réentrant.
Sortie listable
Pascal produit un ensemble de données incluant éventuellement les éléments suivants :
- Lignes d'entête de page
- Liste des instructions source
- Messages d'erreur
- Références croisées de programme
- Liste des procédures et des fonctions
- Informations sur les identifiants utilisés dans une procédure
- Liste pseudo-CAL du programme ou du module
L'instruction d'appel Pascal et les directives du compilateur vous permettent de contrôler la sortie et de spécifier l'ensemble de données de réception. Les informations actuelles incluses dans l'ensemble de données de sortie dépendent de la combinaison des options du compilateur activées ou désactivées dans l'instruction d'appel Pascal. Voir le tableau précédent pour obtenir la liste des options disponibles.
La sortie listable est divisée en pages. Sous COS, le nombre de lignes par page est contrôlé par le paramètre LPP de l'instruction de contrôle OPTION.
Lignes d'en-tête de page
Chaque page de sortie listable contient une ligne d'entête incluant les informations suivantes :
- Le niveau du compilateur
- L'heure et la date de début de la compilation
- Le nom du programme ou du module
- Le nom de la procédure ou de la fonction en cours de traitement pour la liste des instructions source, ou le titre de la liste pour les options de liste spéciales
- Le numéro de page global
Un sous-titre optionnel de 72 caractères maximum, demandé via l'option du compilateur ST, apparaît sur la ligne suivant l'entête de la page. Les valeurs actuelles des options de compilation sont également écrites sur cette ligne.
Listes d'instructions source
La liste d'instructions source est générée lorsque l'option de liste L+ est sélectionnée. La liste est un enregistrement de toutes les instructions Pascal composant le programme ou le module telles qu'elles sont lues et interprétées séquentiellement à partir de l'ensemble de données d'entrée source. Un numéro de ligne est répertorié à gauche de chaque ligne identifiant sa position dans le programme ou le module.
Le niveau d'imbrication d'une instruction apparaît à gauche du numéro de ligne. Ce numéro reflète le niveau d'imbrication au début de la ligne. Le corps du programme et chaque corps de procédure ou de fonction commencent et se terminent par un niveau d'imbrication de zéro.
Messages d'erreur
Les erreurs rencontrées lors de la compilation d'une instruction sont signalées par des lignes suivant cette instruction, avec des codes d'erreur répertoriés à la fin de la liste des instructions source. Lorsqu'aucun ensemble de données de liste n'a été demandé, les instructions comportant des erreurs et les messages d'erreur correspondants sont écrits dans l'ensemble de données de sortie standard.
Informations de référence croisée
Les options de compilation X+, XV+ et XP+ fournissent des informations de référence croisée dans le listing Pascal comme suit :
- XV+ génère une référence croisée d'identificateur global.
- XP+ génère une référence croisée de procédure globale.
- X+ génère une référence croisée d'identificateur global et une référence croisée de procédure globale et revient à spécifier XP+:XV+.
Référence croisée des identificateurs globaux
La référence croisée des identificateurs globaux répertorie les numéros de ligne dans lesquels chaque identificateur apparaît dans le programme ou le module ainsi qu'un code indiquant le type d'utilisation. Les codes suivants sont utilisés dans ces références.
Code | Signification |
---|---|
D | Défini ou déclaré |
L | Emplacement de l'étiquette dans le code |
R | Autre référence |
gR | Étiquette référencée dans l'instruction GOTO. |
wR | Variable d'instruction WITH, pointeur ou champ |
S | Définir une nouvelle valeur |
pS | Pointeur dont la variable référencée est modifiée ou transmise en tant que paramètre VAR. |
vS | Passé en tant que paramètre VAR. |
Seuls les 32 premiers caractères d'un identificateur sont répertoriés. Les 16 premiers caractères des noms des procédures contenant les numéros de ligne apparaissent également dans la table de références croisées.
Référence croisée de procédure
La référence croisée de procédure répertorie les informations sur le programme ou le module et sur chaque procédure ou fonction par ordre alphabétique par nom. La référence croisée de procédure comprend les informations suivantes :
- Les numéros de ligne de la déclaration et du corps
- L'adresse relative du point d'entrée
- Le nombre de mots de pile pour cette procédure
- Le niveau d'imbrication statique ; le nombre de procédures dans lesquelles cette procédure est incluse (un programme ou un module est au niveau zéro).
- Le nom de la procédure dans laquelle cette procédure a été déclarée
- Une liste de procédures déclarées dans cette procédure
- Une liste de procédures appelées par cette procédure
- Une liste de procédures appelant cette procédure
Liste des procédures et des fonctions
Une liste de procédures et de fonctions est fournie chaque fois qu'une liste de sources, une référence croisée de procédure, une liste pseudo-CAL ou des informations d'identification sont demandées. Les procédures et les fonctions sont répertoriées dans l'ordre de déclaration avec le numéro de ligne de la déclaration. Chaque nom de procédure est imbriqué en fonction de son niveau d'imbrication statique.
Informations sur les identificateurs
Les informations sur les identificateurs globaux et locaux sont écrites dans la liste lorsque l'option de compilation XI+ est spécifiée. Ces informations sont décomposées et entreposées dans les tableaux suivants pour chaque procédure ou fonction :
- Types et champs
- Constantes
- Variables locales
- Identificateurs non locaux
Les informations d'identification de chaque procédure apparaissent avec la référence croisée de procédure.
Types et champs
La table de types contient les informations suivantes sur chaque type défini dans la procédure :
- Les 32 premiers caractères du nom.
- La taille en mots ou en bits d'une variable de ce type.
- Une liste de champs dans un type d'enregistrement qui comprend les éléments suivants :
- Les 32 premiers caractères du nom du champ.
- La plage de mots et de bits de l'enregistrement pour ce champ.
- Les 16 premiers caractères du nom du type du champ.
- Une liste de constantes dans un type énuméré avec la valeur ordinale de chaque constante.
Les constantes
Le tableau des constantes contient les informations suivantes sur chaque constante définie dans la procédure :
- Les 32 premiers caractères du nom
- La taille de la constante en mots
- La valeur de la constante
Variables locales
La table des variables locales contient les informations suivantes sur chaque variable déclarée dans la procédure :
- Les 32 premiers caractères du nom.
- Le bloc ou la classe d'entreposage; l'un des éléments suivants :
- EXPORTED pour les variables exportées
- PARAM pour les paramètres formels
- STACK pour les variables de pile locales
- STATIC pour les variables statiques
- Un nom externe pour les variables importées, dans des blocs communs ou dans CACHE
- Adresse (décalage du mot octal dans le cadre de la pile, décalage du mot octal dans le bloc de chargement ou numéro de paramètre formel) ; aucune adresse n'est donnée pour les variables importées ou communes.
- Le registre auquel une variable est affectée (le champ du registre peut être vide).
- La taille en mots de la variable.
- Les 16 premiers caractères du nom du type de la variable.
Les variables statiques et exportées se trouvent dans un bloc de chargement avec le nom externe du programme ou du module.
Identificateurs non locaux
Le tableau des identificateurs non locaux inclut une liste alphabétique de tous les identificateurs, constantes et types non locaux référencés dans la procédure, ainsi que les noms des procédures dans lesquelles ils ont été déclarés ou définis.
Liste des pseudo-CAL
Une liste de pseudo-CAL d'un programme ou d'un module Pascal est écrite dans l'ensemble de données de liste lorsque l'option C+ est spécifiée dans l'instruction d'appel. Les instructions CAL affichées par l'option C+ sont équivalentes au code généré pour le programme ou le module une fois toutes les optimisations et la planification effectuées.
Chaque instruction de la liste de pseudo-CAL est organisée comme suit :
- Adresse relative de l'instruction CAL
- Équivalent octal de l'instruction CAL
- L'instruction pseudo-CAL générée
- Les 8 premiers caractères du nom de la procédure ou de la fonction dans laquelle l'instruction apparaît
- Le numéro de ligne de l'instruction source Pascal qui a généré l'instruction
Les noms symboliques sont utilisés pour les étiquettes générées par le compilateur et pour les éléments externes. Les adresses relatives sont utilisées pour les variables statiques et exportées et pour les littéraux. Les noms symboliques sont affichés ajoutés à @MAIN, un pseudonyme local pour un bloc de chargement ayant le nom externe du programme ou du module.
Ciblage du processeur (Non disponible sur le système informatique CRAY-2)
Le paramètre CPU vous permet de spécifier les caractéristiques de la machine sur laquelle le programme compilé s'exécute.
Le compilateur Pascal, par défaut, suppose que le programme compilé s'exécute sur la machine sur laquelle il est compilé. Le paramètre CPU spécifie une machine cible différente de la machine hôte ou désactive certaines caractéristiques de la machine hôte.
Pour une description des machines cibles et de leurs caractéristiques facultatives, consultez le paramètre CPU de l'instruction de contrôle Pascal dans cette section.