Obligement - L'Amiga au maximum

Samedi 27 avril 2024 - 03:18  

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 PCQ 1.1c
(Article écrit par Cédric Beust et extrait d'A-News (Amiga News) - juillet 1990)


Pourquoi PCQ ? Eh bien... "P" comme "Pascal", "C" comme "compilateur" et... "Q" comme l'initiale de son auteur qui n'a pas voulu se casser la tête. Il avait en effet mieux à faire !

Un compilateur Pascal petit petit, mais... qui marche

D'accord, PCQ n'est pas encore un compilateur complet. Lui manquent les ensembles (set), les articles avec variante, des messages d'erreurs plus explicites et un code un peu plus optimisé. J'ajouterai qu'il n'accepte pas les paramètres de type procédure mais vous conviendrez avec moi que ces aspects ne sont pas vitaux.

Si vous avez suivi jusque-là, vous aurez probablement fait la déduction que PCQ accepte les includes, les articles, les types énumérés, les pointeurs, les tableaux et les chaînes, tout cela en plus du minimum vital de tout compilateur qui se respecte. Voilà pour la partie standard de Pascal.

Plus spécifiquement, PCQ vous autorisera à faire des références externes, des conversions de type à la Modula-2 (du genre 'char(20)') et également de déclarer vos "const", "type" et "var" dans n'importe quel ordre. Autre détail qui a son importance : les sources sont fournis dans leur intégralité, en Pascal. PCQ est d'ailleurs capable de se compiler lui-même (pour ceux que les questions métaphysiques empêchent de dormir et qui se demandent comment un compilateur Pascal écrit en Pascal a pu naître, je les renvoie à la question fondamentale "qui est venu en premier : l'oeuf ou la poule ?").

En utilisation

Voyons maintenant plus précisément comment procéder avec PCQ. Le compilateur s'appelle Pascal et fait environ 95 ko. Il se lance simplement en spécifiant le fichier d'entrée (un ".p") et le fichier de sortie (un ".s"). Comme vous le voyez, il ne produit pas directement un module mais un source en assembleur (en texte, quoi).

Autre question : comment assemble-t-on le fichier produit afin d'obtenir un exécutable, et ce à moindres frais ? Réponse : on fait appel au domaine public. En l'occurrence, l'assembleur utilisé est le bien connu A68K qui est d'ailleurs fourni avec PCQ. Cet assembleur va donc produire un ".o" qu'il suffira de relier pour obtenir l'exécutable promis quelques lignes plus haut. Et comment le relie-t-on ce ".o", hein ? Cette fois, je ne souffle plus. Vous aurez sans aucun doute deviné qu'il s'agit du encore plus connu Blink, plébiscité par toutes les bonnes marques de compilateur.

Les exécutables produits ont une taille très raisonnable (du même ordre de grandeur que le MetaComCo pour être précis, sauf que ce dernier produit du meilleur code). En revanche, si vous avez la curiosité de jeter un coup d'oeil sur le ".s" généré par PCQ, vous vous apercevrez que celui-ci prête à sourire (parfois il va même jusqu'à donner). Il n'utilise en tout et pour tout que deux registres dans les expressions, ce qui fait plutôt pauvre sur notre beau processeur qui en possède huit. On n'est pas sur un 8086, que diable ! Enfin bref, c'est gratuit alors on ne peut pas dire qu'on n'en a pas pour son argent...

PCQ possède cependant quelques caractéristiques qu'on regrette parfois de ne pas trouver sur les compilateurs Pascal existants. Les types prédéfinis sont Integer, Short, Byte, Real, Char, Boolean, String, Address, Text et Enumerated. L'adresse de n'importe quelle variable peut être récupérée à l'aide du "@", le résultat étant alors de type Address, soit un pointeur. Sont également implémentées les constantes typées (exemple : CONST Pi: Real = 3.1415). Ne m'en demandez pas plus, je ne vois pas l'intérêt d'une telle chose. Je suppose qu'il s'agit avant tout d'un souci de compatibilité avec Turbo Pascal et Quick Pascal.

Un exemple (par Pascal Amiable)

Voici un petit exemple : nous allons ouvrir une fenêtre Intuition et tracer une série de cercles concentriques dans cette fenêtre.

PCQ
PCQ

Maintenant que vous avez tapé (ou copié) ce programme et que vous l'avez sauvegardé, par exemple dans le répertoire source de la disquette PCQ: sous le nom de "test.p", vous allez pouvoir le compiler, l'assembler et le relier pour en faire un exécutable.

Commençons par le compilateur. Pascal, le compilateur simple passe, convertit un source Pascal en source assembleur. La directive de compilation est des plus simples, puisqu'il suffit de taper "Pascal <source> <destination> [<-q>]", l'option -q limitant le nombre de messages envoyé par le compilateur, aux seuls messages d'erreur. Pour compiler notre exemple, nous taperons :

Pascal PCQ:source/test.p ram:test.asm

Une fois le programme compilé sans erreur, Pascal a généré en RAM: un source assembleur tout à fait éditable et modifiable. En examinant ce code assembleur, on pourra certes dire qu'il n'est pas réellement optimisé, mais ceci me semble normal dans la mesure où le compilateur étant simple passe, l'optimisation du code généré est difficile. De plus, l'écriture d'un compilateur n'étant pas chose aisée, ne jetons pas la pierre à l'auteur. Et puis à ce prix, trouvez-moi quelque chose de mieux...

Il faut maintenant assembler le source assembleur généré pour créer un fichier objet, l'assembleur proposé est le très célèbre a68k, qui est l'un des meilleurs dans la catégorie dans le domaine public.

Sans rentrer dans le détail des options proposées, nous allons nous contenter d'assembler l'exemple en tapant :

a68k ram:test.asm vnutest.o

Le fichier objet doit maintenant être relié, et c'est là qu'intervient le troisième programme que nous avons copié, Blink. Il ne s'agit pas du célèbre éditeur de liens du Lattice/SAS C, mais d'un éditeur de liens du domaine public. Nous allons utiliser pour cela la syntaxe suivante :

blink ram:test.o to pcq:source/test library PCQ:pcq.lib

...et vous avez maintenant un exécutable dénommé "test", que vous allez vous empresser de lancer. Pour automatiser le tout, il vous faudra créer un petit script AmigaDOS. L'auteur nous en fournit un d'exemple qui remplit totalement son rôle. Le voici un peu remanié afin de l'adapter à la disquette que nous avons créée.

PCQ

Il se trouve dans le répertoire Test_PCQ, sous le nom de PL. Rappel : si vous créez votre propre script, n'oubliez pas de positionner le bit "s" (pour script) par la commande "protect +s <nom_du_fichier>". Ceci vous évitera de le lancer par la commande execute.

Un dernier mot

PCQ est livré avec les documentations complètes de Blink et A68K, des includes permettant de faire de la programmation système sur Amiga, l'intégralité des sources permettant de le recompiler et un répertoire contenant une vingtaine d'exemples de programmes.

Nom : PCQ 1.1c.
Développeur : Patrick Quaid.
Genre : compilateur Pascal.
Date : 1990.
Configuration minimale : Amiga OCS, 68000, 512 ko de mémoire.
Licence : gratuiciel.
Téléchargement : Aminet.


[Retour en haut] / [Retour aux articles]