Exécution d'Algae
L'interpréteur Algae assemble vos instructions Algae dans ses propres opcodes, puis les exécute. Lorsque vous travaillez de manière interactive, il exécute cette instruction (ou un bloc d'instructions) à la fois. Lorsque son entrée provient d'un fichier, le fichier entier est assemblé avant que son exécution ne commence.
- Fichiers de démarrage
- La ligne de commande
- Erreurs
- Le prompt algae
- Signaux
Fichiers de démarrage
Lorsque Algae commence son exécution, il essaie normalement de lire et d'exécuter deux fichiers de démarrage. Le premier qu'il essaie est le fichier dans lequel il s'attend à ce que certaines de ses fonctions standard soient définies. Un nom par défaut pour ce fichier est donné lors de la compilation d'Algae - il s'agit généralement de quelque chose comme `/usr/local/lib/algae/4.3.5/algae.A'. Ce nom peut être remplacé par une variable d'environnement appelée ALGAE_RC0.
Sans ce fichier, certaines des fonctions standard d'Algae seront manquantes. Pour cette raison, Algae émettra un message d'erreur et quittera s'il ne trouve pas le fichier. (C'est-à-dire, à moins que l'option «-S» ne soit spécifiée sur la ligne de commande.)
Une fois qu'Algae a lu ses fonctions standard, il recherche le fichier `.algae' dans votre répertoire personnel et l'exécute s'il s'y trouve. Le nom de ce fichier peut être remplacé par la variable d'environnement ALGAE_RC1. L'exécution de ce fichier est inhibée par l'option de ligne de commande «-s». Aucun fichier de démarrage n'est lu si l'option «-S» est donnée.
La ligne de commande
L'Algae prend en charge les paramètres de ligne de commande pour demander diverses actions. Les paramètres commençant par «-» sont des options. Les autres paramètres spécifient les fichiers à exécuter.
Les indicateurs d'option commencent toujours par un tiret. L'Algae prend en charge à la fois les options traditionnelles à une seule lettre et les noms d'option longs mnémoniques. Les noms d'option longs sont indiqués par «--» au lieu de «-». Les abréviations pour les noms d'option sont autorisées à condition qu'elles soient uniques.
Les options modifiant le comportement d'Algae prennent effet avant l'exécution des fichiers. L'ordre des paramètres n'a pas d'importance, à l'exception des deux exceptions suivantes :
- Tous les scripts d'entrée donnés (avec l'option «-e» ou «--script») sont exécutés dans l'ordre dans lequel ils apparaissent sur la ligne de commande. Cela se produit après l'exécution des fichiers de démarrage et avant l'exécution de tout autre fichier.
- Tous les fichiers d'entrée nommés sur la ligne de commande sont exécutés dans l'ordre dans lequel ils apparaissent.
Vous trouverez ci-dessous une liste des options acceptées par Algae. Les noms des options courtes et longues sont indiqués :
Options | Description |
---|---|
-D --disassemble |
Cette option active le désassembleur, affichant les opcodes d'Algae sur stderr sous une forme similaire à celle du langage de programmation assembleur. Vous souhaiterez probablement combiner cela avec l'option -S; sinon, vous obtiendrez plus de 800 lignes d'opcodes à partir des fonctions standard. |
-d i --debug i |
Cette option définit le niveau de débogage sur i, où i est un entier. Elle n'est normalement utile que pour déboguer l'implémentation d'Algae. |
-e commands `--script commands |
Cette option vous permet de fournir un script à Algae pour qu'il l'exécute à partir de la ligne de commande, plutôt que depuis un fichier ou depuis l'entrée standard. Un tel script est exécuté après tout fichier de démarrage mais avant tout autre fichier. N'importe quel nombre d'options «-e» (ou «--script») peut être donné, et les scripts spécifiés sont exécutés dans l'ordre dans lequel ils apparaissent sur la ligne de commande. |
-h --help |
Affiche une brève description des paramètres de la ligne de commande. |
-i --interactive |
Cette option permet à Algae d'utiliser le mode interactif lors de la lecture à partir du périphérique d'entrée standard «stdin». Sans cette option, Algae utilise le mode interactif uniquement lorsque son entrée semble provenir d'un terminal. En mode interactif, l'entrée est analysée ligne par ligne et les exceptions ne provoquent pas la fermeture d'Algae. |
-n --nowhite |
Cette option modifie la manière dont les scalaires sont affichés. Les instructions d'affichage (c'est-à-dire les instructions terminées par un saut de ligne ou un caractère «?») précèdent normalement la valeur du scalaire d'une tabulation et la suivent d'un saut de ligne. Avec cette option définie, ni la tabulation ni le saut de ligne ne sont affichés. (Pour les scalaires de type caractère, les guillemets sont également omis.) Cette option affecte uniquement les instructions d'affichage et n'a aucun effet sur les fonctions telles que printf. |
-p --profile |
Cette option permet le profilage d'exécution, un moyen de déterminer les caractéristiques du temps d'exécution de votre programme Algae. Lorsque le profilage est
activé, le profileur interrompt périodiquement Algae et enregistre la ligne en cours d'exécution. Lorsque Algae se ferme, il enregistre ces données dans le
fichier «algae.out» du répertoire actuel. Utilisez la fonction prof pour lire le fichier «algae.out» et le résumer par fichier et par numéro de ligne. Vous pouvez souhaiter utiliser la fonction strip en conjonction avec le profilage. Étant donné que strip supprime les informations de ligne et de fichier d'une fonction, tout temps passé dans un appel à cette fonction est facturé sur la ligne à partir de laquelle elle a été appelée. Ils ont rencontré plusieurs systèmes sur lesquels des bogues du système d'exploitation empêchent le profileur d'exécution de fonctionner correctement. Il s'agit notamment d'un DECstation et d'un Titan, tous deux dotés d'architectures MIPS. Si vous avez un tel système, Algae doit avoir été installé avec le profileur d'exécution désactivé. Dans ce cas, vous obtiendrez un message d'erreur si vous essayez d'utiliser l'option «-p». |
-R --restrict |
Cette option permet à Algae de fonctionner en mode restreint. La fonction système est désactivée, tout comme les «tubes» (c'est-à-dire les noms de fichiers
commençant par le caractère «!»). Le mode restreint doit être utilisé chaque fois que vous traitez avec du code Algae non fiable. Sans cela, un fournisseur malveillant de ce code pourrait causer des dommages majeurs. |
-r --noreadline |
Si la fonction GNU Readline est disponible, Algae l'utilise normalement pour l'édition interactive de la ligne de commande et l'historique. L'option -r force Algae à ignorer le traitement de Readline. Les commandes d'édition de Readline sont similaires à celles d'emacs : C-f en avant, C-b en arrière, C-p en haut et C-n en bas. Vous pouvez passer au style vi en tapant M-C-j. |
-S --nostartup |
Si cette option est sélectionnée, aucun des fichiers de démarrage d'Algae ne sera lu. Cela signifie que de nombreuses fonctions standard ne seront pas disponibles. |
-s --norc |
Cette option ignore la lecture du fichier de démarrage de l'utilisateur. |
-V --version |
Cette option permet d'afficher les informations de version et de date. |
-x --nostdin |
Cette option empêche Algae de lire stdin par défaut lorsqu'aucun nom de fichier n'est donné sur la ligne de commande. |
Tous les noms de fichiers donnés sur la ligne de commande sont exécutés en tant qu'entrée dans Algae. Si aucun nom de fichier n'est donné (et que l'option -x n'est pas présente), l'entrée provient de stdin. Vous pouvez spécifier stdin explicitement avec un seul tiret, donc une ligne de commande comme :
algae init.A - |
demande à Algae d'exécuter d'abord «init.A» puis de lire à partir de l'entrée standard.
Les erreurs
Plusieurs types d'erreurs peuvent être rencontrés lors de l'exécution d'Algae. Les deux plus courantes sont les erreurs d'analyse et les erreurs d'exécution. Les erreurs d'analyse se produisent pendant qu'Algae analyse ses instructions d'entrée. Les erreurs d'exécution se produisent pendant qu'Algae exécute son code. Dans les deux cas, Algae affiche un nom de fichier et un numéro de ligne associés à l'erreur.
Le prompt d'Algae
Lors de l'exécution interactive, Algae affiche le prompt principale lorsqu'il est prêt à lire une commande, et le prompt secondaire lorsqu'il a besoin de plus d'entrées pour terminer une commande. Vous pouvez personnaliser l'invite simplement en attribuant un vecteur de caractères à la variable globale $prompt. Ses deux premiers éléments spécifient les invites principale et secondaire. Par défaut, $prompt est ( "> ", " " ). Affecter autre chose qu'un vecteur de caractères à $prompt n'est pas une erreur : Algae ne vous donnera simplement pas de prompt.
Si la fonction GNU Readline est disponible (c'est-à-dire liée à Algae lors de l'installation), Algae l'utilise normalement pour l'édition interactive de la ligne de commande et l'historique. Les commandes d'édition de Readline sont similaires à celles d'emacs : C-f en avant, C-b en arrière, C-p en haut et C-n en bas. Vous pouvez passer au style vi en tapant M-C-j. L'option de ligne de commande «-r» force Algae à ignorer le traitement de Readline.
Les signaux
Si Algae reçoit un signal d'interruption (parce que vous avez appuyé sur C-c sur le clavier, par exemple), il arrête ce qu'il fait et revient au prompt. (S'il ne s'exécute pas de manière interactive, il se ferme simplement.) Sur les systèmes Unix, vous pouvez également utiliser la commande kill pour envoyer un signal à un processus.
L'implémentation de la gestion des signaux d'interruption dans Algae est nécessairement un compromis. Nous voulons qu'il réponde rapidement, mais pas au détriment de nos performances. Par conséquent, il arrive parfois qu'Algae ne réponde pas rapidement à un signal d'interruption.
L'envoi d'un signal de fermeture à Algae provoque une sortie immédiate et propre. Il existe divers autres signaux provoquant la fermeture d'Algae, mais c'est celui-ci qu'il faut utiliser si vous voulez que vos fichiers soient fermés correctement,...