Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 09:39  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Test de Lattice 5.02
(Article écrit par Roméo Rapido et extrait d'A-News (Amiga News) - mai 1989)


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).

Lattice 5.02

Le manuel se présente sous la forme de deux classeurs (tiens, ils copient Manx ?) que Frédéric Autechaud devrait trouver très jolis, n'est-ce pas mon cher collègue ?

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.

Lattice 5.02

Bien sûr, il y a aussi des menus déroulants regroupant une bonne partie des options. Comme dans un éditeur digne de ce nom il est possible de déplacer le curseur avec la souris. De plus, si votre ligne est trop longue au lieu de déplacer tout le texte vers la gauche (ce qui fait que vous ne voyez plus ce qu'il y a dessus et dessous), il décale uniquement la ligne et signale une ligne plus longue que la normale par un ">" en vidéo inverse. De plus, il fait automatiquement l'indentation pour le C (chaque fois que l'on tape une "["). Vous aurez la possibilité d'éditer jusqu'à neuf fichiers en même temps.

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 :
  • WC : "word count" qui permet de compter le nombre de mots et de lignes dans un fichier.
  • CXREF : générateur de référence croisée pour le C.
  • DIFF : comparateur de fichier.
  • FILE : cherche des fichiers sur disque.
  • GREP : un utilitaire à la sauce Unix.
  • LPROF et LSTAT : permettent de tester les performances des programmes et donc d'optimiser chaque partie en conséquence. LPROF permet de savoir dans quelle partie un programme passe le plus de temps alors que LSTAT sort les résultat sous forme de pourcentages (C presque la même chose).
  • TB : "trace back" qui permet de récupérer dans un fichier les registres, le numéro du Guru, l'adresse du plantage en hexa et par rapport à un label (exemple : main + 5), la pile, etc.
  • lmk : équivalent du "make" de l'Aztec (il était temps) très complet.
Quelques chiffres

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.

Nom : Lattice 5.02.
Éditeur : Lattice.
Genre : compilateur C.
Date : 1989.
Configuration minimale : Amiga OCS, 68000, 512 ko de mémoire.
Licence : commercial.


[Retour en haut] / [Retour aux articles]