| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| install [2026/02/22 15:15] – [Utilisation] root | install [2026/04/03 14:29] (Version actuelle) – root |
|---|
| * WBIN => donne le répertoire de tous les binaires complémentaires aux binaires du langage : bibliothèques partagées (''*.so'' et ''*.dll''), modules externes ''*.o''. D'éventuels sous-répertoires ne seront pas pris en compte. | * WBIN => donne le répertoire de tous les binaires complémentaires aux binaires du langage : bibliothèques partagées (''*.so'' et ''*.dll''), modules externes ''*.o''. D'éventuels sous-répertoires ne seront pas pris en compte. |
| * WLIB => donne l'emplacement des programmes W compilés, autonomes et //library//. Pas de sous répertoire. | * WLIB => donne l'emplacement des programmes W compilés, autonomes et //library//. Pas de sous répertoire. |
| * WSRC => obligatoire pour la compilation, facultatif pour le run-time. Donne le répertoire de base des sources des programmes, fichiers ''*.w'' : utilisé par l'interpréteur et lors de la compilation (pour les instructions [[w:instr:include|include]]). Ce répertoire sert aussi au debugger. Si cette variable n'est pas renseignée, il ne sera pas possible d'interpréter les sources, et en mode //debug// le positionnement dans le source originel ne sera pas disponible. A noter que les sources seront recherchés dans l'arborescence présente dans WSRC. | * WSRC => obligatoire pour la compilation, facultatif pour le run-time. Donne le répertoire de base des sources des programmes, fichiers ''*.w'' : utilisé par l'interpréteur et lors de la compilation (pour les instructions [[reference#include|include]]). Ce répertoire sert aussi au debugger. Si cette variable n'est pas renseignée, il ne sera pas possible d'interpréter les sources, et en mode //debug// le positionnement dans le source originel ne sera pas disponible. A noter que les sources seront recherchés dans l'arborescence présente dans WSRC. |
| ==== Utilisation ==== | ==== Utilisation ==== |
| Pour exécuter un programme W, programme principal et //library//, il faut lancer 3 commandes : | Pour exécuter un programme W, programme principal et //library//, il faut lancer 3 commandes : |
| <code> | <code> |
| > | > |
| > Usage: lwa [-d] [-WLIB:<path>] <file.wa|file.wp> | > Usage: lwa [-c|u] [-WLIB:<path>] <file.wa|file.wp> |
| > | > |
| </code> | </code> |
| L'assembleur ''lwa'' a besoin de connaître le répertoire où lire le fichier assembleur source et où écrire le binaire w généré : contenu de la variable d'environnement WLIB, ou à défaut la valeur du paramètre -WLIB de la ligne de commande. L'assembleur convertit un fichier ''*.wa'' en ''*.wp''\\ | L'assembleur ''lwa'' a besoin de connaître le répertoire où lire le fichier assembleur source et où écrire le binaire w généré : contenu de la variable d'environnement WLIB, ou à défaut la valeur du paramètre -WLIB de la ligne de commande. L'assembleur convertit un fichier ''*.wa'' en ''*.wp''\\ |
| L'assembleur permet également de désassembler un binaire W en produisant le source assembleur au format texte : mettre l'option '' -d '' à la commande. Le désassembleur convertit un fichier ''*.wp'' en ''*.wa''. La règle sur le répertoire WLIB est valable pour le désassemblage, comme pour l'assemblage. | L'option '' -c '' à l'assemblage permet de compresser le binaire //wp// généré. Les binaires compressés sont automatiquement pris en charge par le désassembleur (option '' -u '') et par le runtime w (programme ''lw'' ci-dessous).\\ |
| | L'assembleur permet également de désassembler un binaire W en produisant le source assembleur au format texte : mettre l'option '' -u '' à la commande. Le désassembleur convertit un fichier ''*.wp'' en ''*.wa''. La règle sur le répertoire WLIB est valable pour le désassemblage, comme pour l'assemblage. |
| === Exécution === | === Exécution === |
| <code> | <code> |
| </code> | </code> |
| Le run-time W se lance avec l'exécutable ''lw''. Le run-time W a besoin de connaître : | Le run-time W se lance avec l'exécutable ''lw''. Le run-time W a besoin de connaître : |
| * le répertoire contenant les sources, pour trouver le fichier à compiler ''<file>.w'' : variable d'environnement WSRC, ou à défaut la valeur du paramètre -WSRC de la ligne de commande | * le répertoire contenant les binaires de l'OS (librairies utilisées par le run-time), mais aussi les modules sous forme binaire de l'OS (appelés par //invoke//) : variable d'environnement WBIN, ou à défaut la valeur du paramètre -WBIN de la ligne de commande |
| * le répertoire où mettre le fichier résultat, assembleur W au format texte, variable d'environnement WLIB, ou à défaut la valeur du paramètre -WLIB de la ligne de commande | * le répertoire où lire les binaires W (programme principal, mais aussi les éventuelles //library// W), variable d'environnement WLIB, ou à défaut la valeur du paramètre -WLIB de la ligne de commande |
| | Le run-time W se trouve dans un répertoire présent dans le //PATH// de l'OS, et doit donc être trouvé automatiquement par le shell.\\ |
| | Le répertoire contenant le chemin de base des sources (//WSRC//) est facultatif. Il est utile si le debugger doit être utilisé.\\ |
| | L'option ''-d'' permet de démarrer le run-time en mode debug sur le programme.\\ |
| | L'option ''-t'' permet d'afficher dans la console les instruction assembleur exécutés par le run-time, pour le programme demandé.\\ |
| | Le run-time exécute le programme binaire W <prog> (l'extension ''.wp'' n'est pas à mettre). A suivre d'éventuels paramètres qui seront utilisés par le programme W (pas par le run-time). |
| === Formatage === | === Formatage === |
| | <code> |
| | > |
| | > Usage: lwf <file.w> |
| | > |
| | </code> |
| | Le formateur lit le fichier entrée, <file.w>, le remet en forme puis écrase le fichier origine avec la version formatée.\\ |
| | La version formatée est également envoyée sur la sortie standard.\\ |
| | Le formatage est fait à la norme //W// : |
| | * indentation par pas de 3 espaces |
| | * les commentaires de fin de ligne, commençant par '';'', sont séparés du code par des espaces pour s'aligner sur un colonage multiple de 8 |
| | * les instructions suivantes augmentent le niveau : ''begin library background sub if loop foreach'' |
| === Compilation lex === | === Compilation lex === |
| //En construction// | //En construction// |