|
||||||||||||||||||||||||||||||||||||||||||||
|
Le compilateur est livré sur six disquettes avec un script d'installation pour les possesseurs de disque dur. Pour les autres, un conseil, achetez une extension mémoire et (ou) un deuxième lecteur. L'installation du compilateur sur une disquette est presque impossible à moins de se passer de l'éditeur ou du débogueur, or ce sont ces deux programmes qui font le principal intérêt de la version 5.0. Il faut donc soit les avoir en mémoire (nécessité de 1 Mo) soit avoir un deuxième lecteur (nota : si on a les deux, ce n'en est que mieux car pour compiler sous éditeur, qui fait une centaine de ko, il reste peu de place). Frédéric Autechaud : ... (réflexion intense)... Cr0000rk, wouglaah ! (traduction : oui, le paquetage est très classieux et la couverture des classeurs est moins rugueuse que celle de l'Aztec et préserve mieux la douceur de mes mains !). Il comporte six parties : le manuel de l'utilisateur, l'éditeur, les commandes, les bibliothèques, les utilitaires et le débogueur. Le manuel de l'utilisateur On remarquera une partie réservée au macro-assembleur plus importante que d'habitude (elle était quasiment inexistante dans les docs précédentes) sinon rien de nouveau dans cette partie. L'éditeur LSE (Lattice Screen Editor) Tout d'abord, une constatation : il faut éviter d'utiliser le pavé numérique qui sert de commande. La touche "Enter", par exemple, permet de basculer en entrelacé. Très pratique en clavier US, mais en AZERTY, il faut "shifter" pour accéder aux chiffres (gare à la crise de nerfs surtout que le "." correspond au "Del", les fonctions sont en fait celles qui sont marquées sur le champ des touches du pavé. Attention, "0" supprime le mode insertion). "F1" donne accès au menu Help. Ouf : une page et demie d'options - de quoi perdre la boule. Heureusement qu'ils ont pensé au help. Le point le plus noir : pas d'option "save as" ni de fenêtre de requête pour choisir le nom du fichier, grrrr ! Enfin, le plus intéressant : la possibilité d'appeler le compilateur depuis l'éditeur. Tout d'abord, "Ctrl-F4" pour choisir les options de compilation puis "F4" et en avant ! Chaque fois qu'il y a une erreur arrêt avec choix "continue, abandon, ignore" et le curseur se positionne sur la ligne où a été détectée l'erreur (ou sur la suivante s'il s'agit d'un ";" manquant). De plus, les messages d'erreurs sont dans un fichier éditable ce qui permet de les traduire (il existe d'ailleurs une version en allemand, merci pour nous pauvres petits français !). Les commandes Liste des commandes et de leurs options : voir les parties "utilities" et débogueur pour plus de détails. A noter que cette partie fait double emploi sauf pour le compilateur, c'est-à-dire le lc1 et lc2. Remarquons l'existence d'un lc1b qui est un gros compilateur, avec quelques options en plus, et 20 ko de code supplémentaires, délicate attention pour les possesseurs de seulement 512 ko que d'avoir conçu deux versions. Côté compilateur, plein de nouvelles options et en particulier la possibilité d'utiliser un débogueur (cpr pour les intimes). A noter qu'il n'est plus nécessaire de déclarer les fonctions en "void" ce qui provoquait l'apparition d'une alerte ("warning") dans les versions précédentes. De plus, l'oubli d'un ";" est signalé mais n'est pas considéré comme une erreur entraînant un plantage. Attention tout de même, le compilateur peut se tromper sur les intentions du programmeur. En cas d'oubli, il vaut donc mieux arrêter et rajouter le ";" manquant. Les bibliothèques Manuel très complet de toutes les fonctions proposées par le compilateur avec de nouvelles fonctions qui ont été ajoutées par rapport aux anciennes versions. Les utilitaires Quelques-uns au passage :
Tout d'abord, une constatation : pour utiliser le débogueur du Lattice 5.0, il est nécessaire (voire impératif) d'avoir un disque dur. J'ai, pour ma part, renoncé définitivement à l'utilisation sur disquette (bien que possédant deux lecteurs et 1 Mo de mémoire) car il me manquait toujours un fichier pour faire fonctionner le tout correctement. Je ne parlerais pas ici du compilateur car la version 5.0 est presque identique à la version 4.0. Le code généré est un chouilla plus rapide et plus court (et encore pas tout le temps). Pour ce qui est du temps de compilation, je n'ai pas noté d'accélération (ou alors il faut un chrono suisse). Quant au module d'optimisation qui doit permettre de générer du code jusqu'à 40% plus rapide ou 40% plus court (sources : dossier de presse de Lattice), je dirai bof ! Ce n'est pas évident. En tout cas, vous n'obtiendrez sûrement pas 40% de gain dans tous les cas, surtout si votre programmation en C est déjà optimisée. Nous allons donc causer de CPR 1.02, le débogueur du kit 5.02. CPR CPR se présente sous la forme de multifenêtres retaillables à loisir. Dans la barre de l'écran, il y un rappel de l'effet des touches de fonctions, exemple : "F4" fait apparaître la fenêtre des registres. Le tout est relativement ergonomique. A noter au passage que la fenêtre des registres donne l'état des différents bits du CCR ce qui évite un décodage fastidieux. De plus, on a la possibilité d'avoir les registres en permanence sans avoir à les redemander comme sur SDB. Je décide de tenter l'expérience avec le programme "lines.c" qui se trouve sur une des six disquettes (c'est celui qui est montré sur les photos d'écran au début des explications dans la doc). Je compile avec les options requises et j'invoque le débogueur. Argh ! Pas de sources en C affichées et un message m'indiquant que le débogueur ne trouve pas la fonction ? Après un bref coup d'oeil dans le source, il apparaît que le programmeur a utilisé l'astuce suivante : au lieu d'appeler sa fonction "main()", il a utilisé "_main()", c'est normalement cette fonction qui appelle "main()" (le nôtre). Attention tout de même si vous utilisez cette astuce, il ne faut pas utiliser de fonctions d'entrées-sorties genre "printf", "getchar" ou alors... Conséquence, on gagne presque 2 ko de code mais on plante le débogueur (c'est sympa un exemple livré avec le débogueur qui marche dans la doc et pas dans la réalité. Merci Lattice, bien vu). Bon, c'est reparti pour un tour. Cette fois-ci, ça marche, mais pas de source en C, plantage ?... ah non, il faut attendre quelques secondes avant que le texte n'apparaisse, bizarre autant qu'étrange. Bon, côté commandes, rien que du classique : les points d'arrêt les recopies du contenu de la mémoire, etc. A noter que comme SDB, les recopies du contenu d'une structure, par exemple "NewWindow", fait apparaître le nom des champs et leur valeur avec, au choix, le format décimal ou hexa (c'était la moindre des choses que de faire au moins aussi bien que SDB). Vous pouvez aussi demander des informations sur les variables, exemple : "whatis i" vous clonera le type de la variable "i". Bon Ok, je fais GO. Je tire l'écran pour voir tourner le programme en question (il tourne dans l'écran Workbench) je clique pour l'arrêter et crack, coucou le Guru ! Nouvelle tentative mais, cette fois, je mets un point d'arrêt à la dernière ligne du programme. GO, sortie du programme, tout est ok. Je passe alors en mode "mixed" qui affiche le source en C au-dessus du code ASM correspondant, ce qui vous permet à moindre frais de vérifier l'optimisation du code. Je décide alors une exécution pas à pas et, effectivement, le retour au débogueur s'effectue mal, dommage, surtout que chez la concurrence (SDB de Manx), cela fonctionne on ne peut mieux. Un autre bogue relevé au hasard : si l'on appele le débogueur avec l'option "-w" pour que celui-ci utilise l'écran Workbench (on gagne de la place mémoire) le mode trace provoque un Guru (toujours sur l'exemple "lines.c" : "t 20" pour avancer de 20 instructions et hop !) de même un "restart", qui est censé réinitialiser le débogueur, provoque quelquefois la visite de notre ami le Guru. Côté positif, si vous tentez d'exécuter des instructions interdites, ou pour certains plantages (pas la sortie qui marche mal hélas), CPR affiche une fenêtre de requête vous demandant si vous voulez faire un "snapshot". Si vous répondez "non", votre Amiga ira méditer quelques instants. Par contre, si vous répondez "oui", il créera un fichier "snapshoot" qui contient la valeur des registres, l'adresse du plantage, etc. De plus, il y a retour au CLI mais sans désalouer la mémoire utilisée par votre programme et le débogueur. Si vous avez seulement 512 ko, bien que vous puissiez continuer à utiliser le CLI, la réinitialisation est imminente (voire le Guru dans certain cas). Enfin, tout ceci ne ma pas l'air très au point. Bilan Bon, je n'en dirai pas plus de mal, mais il semble évident que Lattice, pressé par la concurrence (encore le Manx Aztec C et son débogueur SDB) a sorti cette version un peu trop vite et les bogues y sont nombreux (si si, nombreux, il faut le dire) ce qui gêne considérablement dans l'utilisation de ce programme qui, par ailleurs, semble très ergonomique et convivial. De plus, le fait d'être pratiquement obligé de posséder un disque dur me permet de déconseiller l'achat du Lattice 5.0 à tous ceux qui veulent se payer un compilateur et qui ne disposent pas de cet "accessoire" indispensable. Dernier argument: le Manx tourne très bien avec 512 ko et un seul lecteur, même si cela est un peu fastidieux (nombreux changements de disquettes) et qu'il est préférable d'avoir deux lecteurs (l'extension mémoire étant facultative ou utile seulement pour faire des gros programmes). De plus, SDB fonctionne parfaitement (en tout cas moi je ne connais pas de gros bogue et je ne peux pas en dire autant de CPR). Sur ce, chers amigados, je retourne à mes élucubrations en attendant la version 5.0 de l'Aztec ("Sortie trés bientôt" nous ont affirmé les responsables de Manx à la dernière AmiExpo) qui, je l'espère comportera moins de bogues que celle de Lattice. Bon, il ne nous reste plus qu'à attendre la version 6.0 du compilateur. En attendant, je retourne à l'Aztec.
|