Obligement - L'Amiga au maximum

Vendredi 29 mars 2024 - 09:45  

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 DICE Pro 3.0
(Article écrit par Denis Bernard et extrait d'Amiga News - septembre 1994)


Voici enfin le résultat de quatre longues années de travail, et quel résultat ! L'atout principal de cette nouvelle version de DICE est son environnement de programmation intégré : compilation directe depuis l'éditeur, aide en ligne, système de gestion de projets complexes sous Intuition, etc. De plus, la politique commerciale constante de son éditeur (OIC) en fait le compilateur C professionnel le moins cher du marché Amiga.

Présentation

DICE Pro (ou DICE 3.0) est la version commerciale du compilateur partagiciel DICE C créé par Matt Dillon et déjà distribué par Someware (versions 2.06R et 2.07R). Le paquetage comprend un manuel de 450 pages et cinq disquettes contenant deux éditeurs de texte, divers scripts ARexx permettant en plus d'utiliser TurboText et CED avec DICE, compilateur, éditeur de liens, outils de débogage, outil de gestion de projets sous Intuition, outils de gestion des sources C, exemples, sources de quelques-uns des outils ainsi que des bibliothèques de l'éditeur de liens, système de contrôle des révisions, et, pour finir, un système d'aide en ligne très performant et compatible 1.3. Tout est entièrement configurable et interfacé par ARexx !

Je pense qu'il est utile de vous signaler que DICE n'est plus le travail d'un seul homme. En effet, Matt Dillon a réuni autour de lui quelques personnalités du monde Amiga au sein de la société Obvious Implementations Corporation, les plus connus étant Andy Finkel (ex-ingénieur Commodore, responsable du projet Workbench 2.x), Bryce Nesbitt (ex-ingénieur Commodore, premières versions d'Enforcer) et John Toebes (a été directeur du projet SAS/C 5.10 chez SAS Institute).

Installation

DICE Pro peut être installé sur tout Amiga équipé au minimum du Kickstart 1.3, de 1 Mo de mémoire et de deux lecteurs de disquette (toute configuration plus musclée est la bienvenue). L'installation se fait avec le logiciel Installer de Commodore ; tout se passe donc sans surprise. On peut choisir parmi trois scripts d'installation : l'un procède à l'installation "normale" sur disque dur, l'autre sur disquettes et le troisième installe sur disquettes la version gratuicielle de DICE.

La place occupée sur disque dur peut varier de 2,5 Mo (compilateur, débogueur, outils, includes et bibliothèques 1.3) jusqu'à 9 Mo pour une installation complète. Malheureusement, ceux qui ont une version précédente de DICE devront l'effacer avant d'installer DICE Pro.

L'installation sur disquettes place sur celle-ci un système de compression/décompression temps réel qui permet d'économiser beaucoup de place. Toutefois, l'utilisation d'un compilateur C sur disquettes est impensable pour une programmation sérieuse.

Mais qu'a-t-il donc dans le ventre ?

Comme tous les compilateurs C, DICE dispose d'un préprocesseur (dcpp), d'un compilateur (dc1), d'un assembleur (das), d'un éditeur de liens (dlink) et enfin d'un front-end (dcc), qui appelle successivement les précédents à votre place et prend totalement en charge la compilation, depuis votre source C jusqu'à l'exécutable. Un utilitaire du type make, DMake, facilite la gestion de projets complexes grâce à un fichier makefile.

Jusque-là, il s'agit du strict minimum pour un compilateur C. La plupart des options standard sont présentes : 100% compatible C ANSI, génération de code réentrant, modèles small/large code et small/large data (adressage relatif à A4), directives #pragma LibCall et #pragma SysCall, passage d'arguments par la pile ou par les registres, utilisation transparente des bibliothèques IEEE, gestion dynamique de la pile, génération de code pour ROM, génération de symboles de segments, utilisation sélective de la mémoire (directives __clip, __far, __near), etc.

Au niveau de l'aide à la programmation, on trouve : ouverture automatique des bibliothèques système, second point d'entrée _main() (sans stdio), point d'entrée wbmain() pour les exécutables Workbench, routines autoinit et autoexit, bibliothèque de fonctions Unix.

De plus, quelques fonctions d'interfaçage ARexx sont intégrées et rendent la création d'une interface ARexx enfantine (l'exemple de la documentation fait à peine 80 lignes). Il y a aussi un système de cache pour accélérer les entrées/sorties sur disque. Pour qu'un programme puisse l'utiliser, il suffit de déclarer une constante dans la source (c'est le cas de presque tous les outils de DICE Pro). Avec un peu de mémoire, on arrive ainsi à obtenir un gain de temps de compilation non négligeable.

A cela s'ajoutent quelques outils plus spécifiques : désassembleur, profiler (permet de "chronométrer" chaque routine d'un exécutable), outils de conversion (fichier.FD->fichierlib, fichier.FD->#pragmas, bibliothèques large data->small data) et lbmake qui permet de créer une bibliothèque "linker". Malgré cette quantité impressionnante d'options, DICE ne fait que les optimisations minimum. Il reste tout de même un effort à faire, au moins sur la taille du code généré qui a une légère tendance à l'obésité.

Outils intégrés

DICE dispose de quelques outils CLI très utiles ainsi que la plupart des outils de débogage du Software Toolkit de Commodore sont fournis : enforcer, mungwall, findhit, etc.

J'ai gardé le meilleur pour la fin : la gestion complète de DICE par interface graphique, le système d'aide en ligne et le système de contrôle des révisions.

VOpts

VOpts, ou Visual-Options, est l'outil qui permet de définir toutes les options de compilation utilisées par défaut par DCC. Avec cet outil, on peut tout "régler" de façon très intuitive. La méthode traditionnelle le pour déterminer les options de compilation est d'aligner une série de signes cabalistiques (du type "-r", "-mD", etc.) dans une variable d'environnement. Avec VOpts, tout devient beaucoup plus simple : d'un seul clic de souris on modifie telle ou telle option. Clic ! Toutes les options sont écrites en toutes lettres (plus de signes cabalistiques) et sont regroupées par catégorie, ce qui rend la recherche et la modification d'options très aisées. Par exemple, pour créer un exécutable pour 68030, il suffit de placer le gadget cyclique intitulé "Processeur" sur "68030".

DICE Pro
Requête VOpts

Cet outil a cependant un léger défaut : lorsque vous demandez de sauver les options, VOpts se contente de les sauver dans la variable d'environnement volatile DCCOPTS, sans en faire une réelle sauvegarde dans ENVARC:DCCOPTS, ce qui oblige à faire cette sauvegarde manuellement en passant par le menu "Sauver en...". Les sources de VOpts et VMake étant fournies, il ne faut que quelques minutes pour corriger ce bogue.

DICE Pro
Requête VMake

Pour finir, VOpts est complètement reconfigurable : on peut complètement redéfinir les intitulés des menus, la (les) fonction(s) associée(s) à chaque élément de menu, les raccourcis clavier ainsi que le texte de tous les messages. Comme tous les autres outils de DICE, VOpts tire le meilleur parti des possibilités d'AmigaOS 2.x et 3.x, cependant, moyennant quelques fonctions en moins, ils fonctionnent très bien sous 1.3.

VMake

VMake est le coeur de l'environnement de programmation intégré de DICE Pro. En plus de son interface graphique, il a tous les avantages d'un utilitaire du type DMake sans avoir à apprendre un pseudo-langage, beaucoup trop ésotérique pour les débutants, pour créer un makefile. Tous les fichiers d'un projet sont affichés dans une liste (fichiers en-tête (headers), sources C et assembleur).

Par un simple clic, on a directement accès à tous les outils de l'environnement de programmation de DICE, qu'il s'agisse d'éditer un fichier, compiler uniquement un fichier ou tout le projet, exécuter le programme compilé pour le tester, de lancer le débogueur, archiver et changer la révision d'un fichier avec RCS ou encore changer la révision de l'exécutable avec UpRev. L'ajout et la suppression de fichiers à un projet se font très simplement (toujours la méthode clic-clic) et de façon transparente. On s'habitue ainsi très vite à scinder un projet (même petit) en plusieurs sources différentes, ce qui en rend la gestion beaucoup plus aisée. VMake permettant d'utiliser des en-têtes précompilés, la compilation d'un projet réparti en plusieurs sources est beaucoup plus rapide. DICE est fourni avec un ensemble de makefiles types, prévus pour la plupart des situations. A partir du type d'exécutable demandé (Workbench/CLI, Library/Device, Handler), VMake utilisera le makefile correspondant et l'adaptera automatiquement à tout projet. La phase de compilation est gérée par DMake.

De son côté, le programmeur n'a rien d'autre à faire que de choisir le type d'exécutable et de choisir les options avec VOpts. VMake s'occupe ensuite de tout le reste. VMake accepte aussi d'utiliser un dmakefile utilisateur, les plus exigeants pourront donc sans problèmes créer leurs propres dmakefiles. Tout comme VOpts, VMake est complètement reconfigurable : menus, fonctions des menus, raccourcis clavier, GUI, nom du port ARexx, éditeur utilisé, etc. Dernier avantage de VMake, et pas le moindre, il est complètement interfacé avec ARexx, ce qui permet d'adapter l'environnement de DICE à n'importe quel éditeur de texte, pour peu que celui-ci possède une interface ARexx (même rudimentaire) et soit un minimum configurable.

Interface éditeur-compilateur

Si une erreur se produit au cours de la compilation, DCC exécute un script ARexx qui va charger le fichier fautif dans l'éditeur de texte et placer le curseur de celui-ci à l'endroit exact de l'erreur. Grâce aux facilités de configuration et d'interfaçage de DICE Pro, il est possible d'utiliser n'importe quel éditeur de texte (possédant une interface ARexx). Les possesseurs de Cygnus Editor ou de TurboText seront ravis puisque les scripts ARexx pour ces deux éditeurs sont fournis, interface éditeur-VMake et éditeur-DCC.

Les quelques tests que j'ai effectués avec AME ont été assez concluants :
  • Première étape : lancement de VMake et chargement du projet.
  • Deuxième étape : double-clic sur le fichier à éditer, le fichier est automatiquement chargé dans l'éditeur par VMake.
  • Troisième étape : compilation directe à partir du menu de l'éditeur (via ARexx-VMake).
  • Quatrième étape : en cas d'erreur, le fichier fautif est automatiquement chargé dans l'éditeur, et l'erreur est signalée.
L'intégration de mon éditeur (version bêta d'un logiciel commercial) à DICE m'a cependant posé quelques problèmes. Je voulais quelque chose de très performant et sans failles. Cela m'a amené à reprogrammer le serveur de gestion d'erreurs (source fournie) destiné à TurboText. Mes efforts n'ont pas été vains puisque l'ergonomie conjointe de mon éditeur et de DICE me procurent un confort de travail incomparable.

À propos des éditeurs de texte, les deux éditeurs intégrés à DICE n'ont pas grand-chose à envier à d'autres éditeurs commerciaux. Même s'il manque un peu d'ergonomie (de "look and feel" clic-clic), AME est sans conteste le plus puissant des deux. Même après avoir reçu un bon coup "d'amigaïsmes" sur la tête (menus, fenêtres gestion de la souris), MicroEmacs reste un éditeur très orienté vers le clavier. Celui-ci possède un jeu de commandes très étendu, chacune pouvant être appelée directement depuis ARexx. Toutes les fonctions indispensables et superflues sont intégrées, y compris les "folds", ou "plis", qui permettent d'enlever de l'affichage certaines parties d'un fichier, n'en laissant que la première ligne, et de les "déplier" à volonté : ce qui est très pratique lorsqu'on travaille sur un gros fichier.

DICE Help

DICE Help est le système d'aide en ligne de DICE. Le script d'installation de DICE Pro permet de créer ou de mettre à jour le fichier index (nécessaire au fonctionnement de DICE Help) à partir de fichiers autodoc ou includes. Cinq fichiers autodocs sont fournis avec DICE et traitent les sujets suivants : débogueur, fonctions standard C ANSI, commandes CLI de DICE, messages d'erreur, fonctions C supplémentaires (d'origine Unix ou propres à DICE). Toutes les structures définies dans les includes système et dans celles spécifiques à DICE sont aussi ajoutées à l'index.

Ceux qui possèdent le Software Toolkit de Commodore auront juste à indiquer au script d'installation à quel endroit se trouvent leurs fichiers autodocs. Un petit exemple valant mieux qu'un long discours, supposons qu'on soit à la recherche de la description de la structure NewWindow. Trois méthodes (rien que ça) :
  • Par le Shell : on tape "DICEHeIp NewWindow". La partie recherchée de l'include Intuition/Intuition.h est alors affichée dans la fenêtre Shell ; peu pratique dans ce cas puisque la description complète de la structure demandée fait tout de même 132 lignes...

  • Par le Workbench : double-clic sur l'icône de DICE Help, celui-ci affiche une fenêtre de requête dans laquelle il suffit d'entrer la question : "NewWindow". Le texte est alors affiché avec l'utilitaire More.

  • Depuis l'éditeur de texte. Avec un éditeur correctement configuré, il suffit de placer le curseur sur le mot recherché, et, d'un coup de menu, le texte explicatif apparaît dans une nouvelle fenêtre de l'éditeur. DICE Help utilise un système de recherche "floue" qui lui permet de retrouver un mot clef d'après ses premières lettres. Il est vraiment très agréable à utiliser et facilite la vie du programmeur.
DICE Debugger

DICE Debugger (DD) est le débogueur source symbolique intégré à DICE. Cet outil permet d'exécuter un programme pas à pas, instruction par instruction (depuis la source C ou ASM). On peut l'appeler directement depuis le Shell, ou, mieux, depuis VMake. Il dispose de diverses options d'affichage, gère les points d'arrêt et "watchpoints" multiples. L'utilisateur peut reconfigurer les menus et les raccourcis clavier à sa convenance. Ceux qui ont de la place à l'écran peuvent se permettre d'ouvrir plusieurs fenêtres simultanément. Par exemple, tout en ayant le programme dans une fenêtre, une seconde fenêtre affiche le contenu de la table de données. Et comme les autres outils de DICE Pro, il est pilotable par ARexx.

L'inconvénient, c'est que DD n'est pas documenté dans le manuel, mais seulement avec le système d'aide en ligne. Il y est d'ailleurs écrit que la source devrait bientôt être disponible. DD s'avère un peu lourd à l'usage, presque tout se fait au clavier, et il réagit parfois bizarrement lorsqu'on utilise la souris. Le pire, c'est qu'il n'évalue pas correctement les symboles d'adresses de données. Ce bogue devrait être corrigé dans une prochaine mise à jour. Quant à la lourdeur d'utilisation, je pense que ce n'est qu'une question d'habitude, il faut bien se dégourdir les doigts. C'est tout de même un outil qui s'acquitte honorablement de sa tâche et qui facilite beaucoup le développement.

Contrôle de révisions

RCS (Revision Control System) est, comme son nom l'indique, un système de contrôle de révisions. Ce système permet de garder une trace de toutes les modifications apportées à un fichier depuis sa création. Au fur et à mesure des modifications, celles-ci sont archivées dans un tiroir nommé RCS, sous le même nom de fichier auquel est ajoutée l'extension ".v". Ainsi, l'utilisateur peut à tout moment demander la liste exacte des modifications depuis telle ou telle version avec l'historique, désarchiver (depuis RCS) l'avant-dernière version du fichier ou même une version encore plus ancienne.

RCS est disponible dans le DP depuis un certain temps, mais je ne l'avais jamais utilisé parce que ce système n'était utilisable que depuis le Shell, très complexe à maîtriser et en plus les documentations étaient au format de la commande "man" d'Unix, donc illisibles sans cette commande. Avec VMake, tout se fait d'un simple clic de souris.

Lorsqu'on archive un fichier (menu "Check In"), RCS recherche les modifications par rapport à la précédente version, demande à l'utilisateur un commentaire définissant ces modifications, archive le nouveau fichier et verrouille l'original en écriture et effacement. Pour faire une nouvelle modification, on sélectionne le menu "Check Out" (désarchivage) et hop, le fichier est à nouveau modifiable. Ensuite, on archive à nouveau... clic. RCS s'occupe tout seul de modifier les numéros de version et toujours d'un seul clic de souris, on peut demander l'historique du fichier, ce qui a été modifié depuis la version précédente, etc.

Pour le contrôle des révisions d'un exécutable, un autre outil est fourni : UpRev. Celui-ci crée un fichier d'en-tête dans lequel figurent toutes les définitions permettant d'intégrer dans l'exécutable son numéro de version. Pour changer la révision, il suffit de sélectionner le menu "Update revision" de VMake. Décidément, le Shell va bien me manquer...

Documentation

Pour ce qui est de la documentation, OIC nous gâte vraiment : elle est claire, concise et didactique. Qui dit mieux ? Les principaux chapitres sont : Installation, Prise en main, Familiarisation avec le C, L'environnement de programmation visuel (sous Intuition) de DICE, Programmation avec DICE, Table de référence des commandes CLI, Assembleur, Éditeurs DME et AME, Aide en ligne et RCS, Table de référence des fonctions C (ANSI/DICE/Unix), Messages d'erreurs, Problèmes les plus fréquents et solutions.

Les débutants seront heureux d'apprendre que le chapitre "Familiarisation avec le C" est en fait un mini cours de programmation en C et qu'il explique, par exemple, les différences très trompeuses entre la gestion des chaînes de caractères en BASIC et la gestion de celles-ci en C (ce qui n'est pas une mince affaire !). La version anglaise se présente sous la forme d'un livre relié de 449 pages format A5 (j'en ai perdu une en cours d'article) de bien piètre qualité de fabrication et bien peu pratique à utiliser. Mais ne désespérons pas, car si OIC nous a gâtés avec le contenu, l'importateur, Someware, va nous gâter à son tour puisque la version française sera dans un mini classeur (pages au format A5), comme pour la version précédente de DICE.

Performances

Au niveau des performances, rien de bien particulier à dire. Comparé au SAS/C 6.5, DICE Pro compile sensiblement à la même vitesse, assez souvent à l'avantage de DICE Pro, bien que le système de GST du SAS/C soit réputé "redoutable".

Au niveau des exécutables produits, la palme va sans conteste au SAS/C (exécutables plus petits et un peu plus rapides), même sans utiliser ses options d'optimisations. Toutefois, le code généré par DICE Pro ressemble encore assez à de l'assembleur, et fonctionne parfaitement. Les quelques tests de compilation de sources de provenance diverses que j'ai effectués avec DICE se sont passés sans problèmes majeurs. Au pire, il m'a fallu déplacer quelques qualificateurs du type __far et __chip et ajouter un ou deux #define. Le pire que je lui aie fait subir a été de compiler quelques objets de commande pour UIK et AZur et une bibliothèque partagée (fichier ".library"). Il a tout avalé sans renâcler et tout fonctionne très bien. En fait, lorsqu'on a compris comment fonctionne un compilateur C et plus particulièrement DICE, aucun problème n'est insurmontable, tout n'est qu'une question d'expérience.

Conclusion

Malgré quelques petits bogues dans les outils, DICE 3.0 mérite bien le qualificatif "Pro". La souplesse de son environnement de programmation sous Intuition en fait un compilateur performant et très agréable à utiliser, même s'il reste quelques progrès à faire sur l'optimisation du code généré.

Compatible 100% ANSI (sources portables), il offre aussi beaucoup d'options intéressantes comme la gestion simplifiée d'un port ARexx et il n'a pas grand-chose à envier à ses concurrents. Et, comme je l'ai dit en introduction, il est le compilateur C le moins cher du marché Amiga et son rapport qualité/prix est excellent. Cela fait maintenant deux mois que je travaille avec DICE Pro et j'en suis très satisfait.

Nom : DICE Pro 3.0.
Éditeur : Obvious Implementations Corporation.
Genre : compilateur C.
Date : 1994.
Configuration minimale : Amiga OCS, 68000, 1 Mo de mémoire, AmigaOS 1.3, deux lecteurs de disquette.
Licence : commercial.
Prix : 1290 FF.


[Retour en haut] / [Retour aux articles]