Micro Systèmes n°99 jui/aoû 1989
Micro Systèmes n°99 jui/aoû 1989
  • Prix facial : 30 F

  • Parution : n°99 de jui/aoû 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 188

  • Taille du fichier PDF : 156 Mo

  • Dans ce numéro : grandes écoles... du clavier au charbon.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 122 - 123  |  Aller à la page   OK
Pages suivantes >
122 123
BANC D'ESSAI langage Modula-2 et à l'environnement Top-Speed. Si vous lui donnez un nom de module principal, il trouve automatiquement ce qui doit être recompilé pour obtenir un fichier exécutable. Si le compilateur détecte des erreurs dans un fichier source, vous pouvez passer instantanément à l'éditeur pour les corriger puis revenir à Make. Les fichiers.OBJ générés par le compilateur TopSpeed sont au format standard Microsoft/Intel, de telle sorte que vous pourriez fort bien utiliser l'éditeur de liens de Microsoft. Mais vous n'en ressentirez probablement pas le besoin. L'éditeur de liens de JPI est plus rapide, et suffisamment intelligent pour ne lier que le code auquel le programme fait effectivement appel. Vous pouvez spécifier différents paramètres au sein de l'environnement TopSpeed grâce à une option du menu. Vous pouvez, par exemple, établir des directives de compilation pour préparer l'examen du code avec le debugger, ou fixer des directives pour l'éditeur de liens en fonction du type de fichier.MAP que vous voulez obtenir. Vous pouvez aussi donner des directives de façon à entrer une ligne de commande pour un programme tournant à l'intérieur de l'environnement. Top- Speed Modula-2 est fourni avec un jeu de routines de bibliothèque principale qui s'écartent des procédures suggérées dans la version 3 de la définition de Modula-2 de Nicklaus Wirth, Les puristes peuvent obtenir à sa place des modules de bibliothèque standards. et un environnement intégré, ce n'est pas tout. Ce qui compte vraiment, c'est l'aptitude d'un compilateur à générer du code machine compact, rapide et correct. Et c'est quand il s'agit de génération de code que TopSpeed Modula-2 donne toute sa mesure. C'est en examinant le code machine effectivement généré par le compilateur pour des structures de langage classiques que je m'en suis aperçu. Considérons par exemple le code Modula-2 pour l'initialisation d'un tableau de caractères [1... 1700] (voir listing 1 a). Le code machine généré (voir listing 1 b) montre que le compilateur est assez intelligent pour constater que l'ensemble du tableau est initialisé. Le compilateur prépare puis exécute une seule instruction (REP STOSW) sans faire appel à une quelconque routine en bibliothèque et sans initialiser chaque octet individuellement pour autant. Dans le cas d'une simple affectation de chaîne Modula-2 (voir listing 2a) le compilateur fait également preuve de dons certains. Le code machine généré (voir listing 2b) montre que le compilateur Top- Speed a créé le code d'affectation de chaîne directement, et qu'il a eu l'intelligence d'effectuer le déplacement de 101 octets en le décomposant en un déplacement de 50 mots suivis du déplacement d'un octet isolé. J'ai également essayé une autre structure de programme classique, l'instruction case (voir listing 3a). Là, le compilateur TopSpeed empêche que le programme ne se plante si la valeur de la variable de contrôle de l'instruction case est hors limites (voir listing 3b). Fonctionnalités particulières TopSpeed Modula-2 est pourvu de plusieurs fonctionnalités particulières. Parmi celles-ci on trouve un ordonnanceur de tranches de temps que vous pouvez utiliser pour créer des traitements de priorité équivalente s'exécutant concurremment au sein d'un même programme. Il est aisé de lancer un ou plusieurs traitements, et vous pouvez contrôler les priorités de chacun d'entre eux, les communications de l'un à l'autre (c'est-à-dire l'accès à des variables communes), et le partage du temps entre traitements. De plus, il est question chez JPI d'une version de TopSpeed Modula- 2 actuellement à l'étude qui permettrait d'exploiter les fonctionnalités multitâches d'OS/2. Un mécanisme spécial permet de supporter des programmes de gestion d'interruption, y compris des directives de compilation permettant de faire en sorte que les procédures sauvegardent et restaurent des registres et se terminent par une instruction IRET. Mais il n'est possible dans une telle procédure ni de placer une valeur à retourner dans un registre, ni de positionner le registre drapeau. J'ai dû faire appel à un module assembleur indépendant pour arriver à mes fins. TopSpeed Modula-2 est également pourvu de possibilités de fenêtrage du texte qui sont simples à uti- liser, et même amusantes. Lorsque vous ouvrez une fenêtre, vous pouvez spécifier le titre de la fenêtre, si elle possède un cadre ou non, les caractères (s'il y en a) qui constituent le cadre, la rangée et la colonne de départ de la fenêtre, les attributs (couleurs) que vous voulez utiliser, si vous désirez travailler avec un curseur visible, et comment vous voulez que le texte s'affiche dans la fenêtre. Vous pouvez gérer plusieurs fenêtres à la fois et les redimensionner, les déplacer, les renommer et les cacher. A l'intérieur d'une fenêtre, vous pouvez placer le texte de nombreuses façons différentes, y compris en écrivant directement à l'écran et vous pouvez insérer et supprimer des lignes de texte. Toutefois, TopSpeed Modula-2 est assez faible en ce qui concerne le support graphique. Après avoir adapté votre programme à une carte vidéo donnée (il n'a pas de reconnaissance automatique de la carte), vous pouvez faire appel aux procédures de TopSpeed pour passer en mode graphique ou en sortir, pour dessiner des points, des lignes, des cercles, des ellipses, et des polygones. TopSpeed Modula-2 supporte les adaptateurs graphiques CGA, EGA, VGA, Hercules et AT&T. Aucune police particulière n'est fournie avec le compilateur (comme pour BGI de Borland), et il n'y a rien de prévu pour fixer l'épaisseur des lignes ou composer des motifs de remplissage. Mais, pour moi, l'une des caractéristiques les plus intéressantes de TopSpeed Modula-2 Le code vu de plus près Le compilateur peut travailler rapidement. Suivant le degré de complexité du code source, il traite en moyenne entre 6 000 et 10 000 lignes par minute. Le compilateur recompile systématiquement la partie visible de tout module importé (fichiers.DEF), ce qui le ralentit quelque peu, mais évite toute restriction dans l'ordonnancement des modules. Bien sûr, une compilation rapide 122 - MICRO-SYSTEMES LISTING I : (a) Avec TopSpeed Modula-2, une routine d'initialisation pour un tableau [1..1700] de caractères est compilée (b) de manière à ce que l'initialisation s'effectue en ligne, c'est à dire sans appeler une routine en librairie et sans que l'initialisation porte sur chaque octet séparément. (a) FOR I : = 1 TO SIZE(ch_array) DO ch_array[i7 : ='0' ; END ; (b) MOV AX,48 ;'0'= 48 en decimal MOV ES,CS:DataAreaSeg NOV CX,Offset cn_array ; fixe les adresses NOV DI,CX MOV AH,AL ; transforme'0'en un mot ('00') MOV CX,1700/2 ; comptage des mots REP STOSW ; charge 850 mots ('00') avec ; "REPeat-STOre-String-Word"
est le fait que les routines en bibliothèque soient fournies aussi bien sous la forme de fichiers objet que sous la forme de fichiers source. Même si vous ne les personnalisez jamais, il est très précieux de pouvoir disposer de leur code pour s'y référer. L'occasion de changer Si Modula-2 est nouveau pour vous, vous serez content de savoir que TopSpeed Modula-2 est fourni avec un guide d'apprentissage du langage et un manuel de l'utilisateur. Le guide d'apprentissage du langage est une version condensée de l'ouvrage Modula-2 : A Complete Guide de K. N. King (Lexington, MA : D.C. Heath, 1988), adaptee spécifiquement au système TopSpeed Modula-2. Vous vous apercevrez qu'il est complet et de bon conseil, et il vous épargnera probablement et fort heureusement l'achat de manuels « complémentaires ». Le manuel de l'utilisateur explique TopSpeed Modula-2 à l'aide d'exemples et de définitions formelles, y compris les définitions de chacun des modules de la bibliothèque. Les modules de la bibliothèque sont regroupés par catégories plutôt que par ordre alphabétique. Ce dernier m'aurait personnellement mieux convenu. TopSpeed Modula-2 est fort tentant. Il génère un code machine rapide et compact, meilleur en fait que celui généré par certains des compilateurs C les plus cotés. Il comporte de très nombreuses fonctionnalités et de très nombreux outils. A mon avis, il serait même susceptible de pousser ceux qui n'ont jamais utilisé Modula-2 à changer de langage. Barry Nance TOPSPEED MODULA-2 Prix : 1 180 F TTC Importateur : Laver & Wallitz Reproduit avec la permission de Byte, mai 1989, une publication Mc- Graw Hill, Inc. Juillet/Août 1989 LISTING 2 : (a) Quand il compile une simple assignation de chaine, TopSpeed Modula-2 (b) charge 101 octets en chargeant un ensemble de 50 mots suivi d'un dernier octet. (a) si : = "This is a string" ; s2 : = sZ ; (b) ; si : = "This is a strina" ; MOV ES,CS:DataAreaSeg ; 1° assignation - adresses MOV DI.Offset si ; (ES:DI est la destination) MOV SI,Offset str_constant PLSN CS ; constantes chargées en code ; segment POP OS ; donc chargement depuis CS:SI MCV CX,8 ; comptage des mots (pas des octets) RE ? MOVSW ; charge 16 octets (DS:SI à ES:DI) MOVSB ; opère sur le 17° octet s2 : = si MOV DS,CS:DataAreaSeg : début 2° assignation MOV ES,CS:DataAreaSeg ; fixe les adresses MCV DI,Offset s2 ; destination MOV SI,Offset sl ; source MOV CX,50 ; 101 octets dans la chaine, RE ? MOVSW ; donc les 100 premiers ; (= 50 mots) MOVSB ; puis le dernier (101°) octet LISTING 3 : (a) Le TopSpeed Modula-2 protège l'opérateur CASE d'un "plantage" si (b) la valeur de la variable de contrôle n'est pas limitée. (a) CASE i OF (* si i = alors j = *) 1 0 : j : = 0 ; (* 0 0 *) 1 : j : = 1 ; (* 0) ; 2 : j : = 2 ; (* 2 2 *) END ; note : i est déclaré comme entier signé (b) MOV DS, CS:DataAreaSeg MOV AX,i ; charge valeur de i MOV BX,AX SHL BX,1 ; fixe l'index de saut (i * 2) CMP AX,3 ; si i >= 3, JGE NSI : saute au prochain opérateur après le CASE CMP AX,0 ; même chose si i < 0 JL NSI JMP CS:IBX+Tb1 ; saute à Tb1+0, Tb1+2 ou Tb1-4 Tbl : SUS AX,AX ; met AX à 0 JMP Store MOV AX,1 : met AX à 1 JMP Store MOV AX,2 ; met AX à 2 Store : MOV j,AX ; charge AX en j NE : 123



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 99 jui/aoû 1989 Page 1Micro Systèmes numéro 99 jui/aoû 1989 Page 2-3Micro Systèmes numéro 99 jui/aoû 1989 Page 4-5Micro Systèmes numéro 99 jui/aoû 1989 Page 6-7Micro Systèmes numéro 99 jui/aoû 1989 Page 8-9Micro Systèmes numéro 99 jui/aoû 1989 Page 10-11Micro Systèmes numéro 99 jui/aoû 1989 Page 12-13Micro Systèmes numéro 99 jui/aoû 1989 Page 14-15Micro Systèmes numéro 99 jui/aoû 1989 Page 16-17Micro Systèmes numéro 99 jui/aoû 1989 Page 18-19Micro Systèmes numéro 99 jui/aoû 1989 Page 20-21Micro Systèmes numéro 99 jui/aoû 1989 Page 22-23Micro Systèmes numéro 99 jui/aoû 1989 Page 24-25Micro Systèmes numéro 99 jui/aoû 1989 Page 26-27Micro Systèmes numéro 99 jui/aoû 1989 Page 28-29Micro Systèmes numéro 99 jui/aoû 1989 Page 30-31Micro Systèmes numéro 99 jui/aoû 1989 Page 32-33Micro Systèmes numéro 99 jui/aoû 1989 Page 34-35Micro Systèmes numéro 99 jui/aoû 1989 Page 36-37Micro Systèmes numéro 99 jui/aoû 1989 Page 38-39Micro Systèmes numéro 99 jui/aoû 1989 Page 40-41Micro Systèmes numéro 99 jui/aoû 1989 Page 42-43Micro Systèmes numéro 99 jui/aoû 1989 Page 44-45Micro Systèmes numéro 99 jui/aoû 1989 Page 46-47Micro Systèmes numéro 99 jui/aoû 1989 Page 48-49Micro Systèmes numéro 99 jui/aoû 1989 Page 50-51Micro Systèmes numéro 99 jui/aoû 1989 Page 52-53Micro Systèmes numéro 99 jui/aoû 1989 Page 54-55Micro Systèmes numéro 99 jui/aoû 1989 Page 56-57Micro Systèmes numéro 99 jui/aoû 1989 Page 58-59Micro Systèmes numéro 99 jui/aoû 1989 Page 60-61Micro Systèmes numéro 99 jui/aoû 1989 Page 62-63Micro Systèmes numéro 99 jui/aoû 1989 Page 64-65Micro Systèmes numéro 99 jui/aoû 1989 Page 66-67Micro Systèmes numéro 99 jui/aoû 1989 Page 68-69Micro Systèmes numéro 99 jui/aoû 1989 Page 70-71Micro Systèmes numéro 99 jui/aoû 1989 Page 72-73Micro Systèmes numéro 99 jui/aoû 1989 Page 74-75Micro Systèmes numéro 99 jui/aoû 1989 Page 76-77Micro Systèmes numéro 99 jui/aoû 1989 Page 78-79Micro Systèmes numéro 99 jui/aoû 1989 Page 80-81Micro Systèmes numéro 99 jui/aoû 1989 Page 82-83Micro Systèmes numéro 99 jui/aoû 1989 Page 84-85Micro Systèmes numéro 99 jui/aoû 1989 Page 86-87Micro Systèmes numéro 99 jui/aoû 1989 Page 88-89Micro Systèmes numéro 99 jui/aoû 1989 Page 90-91Micro Systèmes numéro 99 jui/aoû 1989 Page 92-93Micro Systèmes numéro 99 jui/aoû 1989 Page 94-95Micro Systèmes numéro 99 jui/aoû 1989 Page 96-97Micro Systèmes numéro 99 jui/aoû 1989 Page 98-99Micro Systèmes numéro 99 jui/aoû 1989 Page 100-101Micro Systèmes numéro 99 jui/aoû 1989 Page 102-103Micro Systèmes numéro 99 jui/aoû 1989 Page 104-105Micro Systèmes numéro 99 jui/aoû 1989 Page 106-107Micro Systèmes numéro 99 jui/aoû 1989 Page 108-109Micro Systèmes numéro 99 jui/aoû 1989 Page 110-111Micro Systèmes numéro 99 jui/aoû 1989 Page 112-113Micro Systèmes numéro 99 jui/aoû 1989 Page 114-115Micro Systèmes numéro 99 jui/aoû 1989 Page 116-117Micro Systèmes numéro 99 jui/aoû 1989 Page 118-119Micro Systèmes numéro 99 jui/aoû 1989 Page 120-121Micro Systèmes numéro 99 jui/aoû 1989 Page 122-123Micro Systèmes numéro 99 jui/aoû 1989 Page 124-125Micro Systèmes numéro 99 jui/aoû 1989 Page 126-127Micro Systèmes numéro 99 jui/aoû 1989 Page 128-129Micro Systèmes numéro 99 jui/aoû 1989 Page 130-131Micro Systèmes numéro 99 jui/aoû 1989 Page 132-133Micro Systèmes numéro 99 jui/aoû 1989 Page 134-135Micro Systèmes numéro 99 jui/aoû 1989 Page 136-137Micro Systèmes numéro 99 jui/aoû 1989 Page 138-139Micro Systèmes numéro 99 jui/aoû 1989 Page 140-141Micro Systèmes numéro 99 jui/aoû 1989 Page 142-143Micro Systèmes numéro 99 jui/aoû 1989 Page 144-145Micro Systèmes numéro 99 jui/aoû 1989 Page 146-147Micro Systèmes numéro 99 jui/aoû 1989 Page 148-149Micro Systèmes numéro 99 jui/aoû 1989 Page 150-151Micro Systèmes numéro 99 jui/aoû 1989 Page 152-153Micro Systèmes numéro 99 jui/aoû 1989 Page 154-155Micro Systèmes numéro 99 jui/aoû 1989 Page 156-157Micro Systèmes numéro 99 jui/aoû 1989 Page 158-159Micro Systèmes numéro 99 jui/aoû 1989 Page 160-161Micro Systèmes numéro 99 jui/aoû 1989 Page 162-163Micro Systèmes numéro 99 jui/aoû 1989 Page 164-165Micro Systèmes numéro 99 jui/aoû 1989 Page 166-167Micro Systèmes numéro 99 jui/aoû 1989 Page 168-169Micro Systèmes numéro 99 jui/aoû 1989 Page 170-171Micro Systèmes numéro 99 jui/aoû 1989 Page 172-173Micro Systèmes numéro 99 jui/aoû 1989 Page 174-175Micro Systèmes numéro 99 jui/aoû 1989 Page 176-177Micro Systèmes numéro 99 jui/aoû 1989 Page 178-179Micro Systèmes numéro 99 jui/aoû 1989 Page 180-181Micro Systèmes numéro 99 jui/aoû 1989 Page 182-183Micro Systèmes numéro 99 jui/aoû 1989 Page 184-185Micro Systèmes numéro 99 jui/aoû 1989 Page 186-187Micro Systèmes numéro 99 jui/aoû 1989 Page 188