FR 2535487 A1 19840504 FR 8309816 A 19830614 "Procédé d'intégration d'un logiciel en langage évolué à un matériel et dispositif pour sa mise en oeuvre". La présente invention concerne la liaison par interface d'un logiciel à un matériel, et plus spécifi- quement un procédé et un dispositif pour traduire les spé- cifications d'interface du matériel/logiciel simultanément en un code pouvant être exécuté par un microprocesseur spécifique et des instructions spécifiques pour le système d'édition de liens/chargement d'une configuration choisie de matériel. Les appareils informatisés sont en réali- té des systèmes de composants mécaniques et électroniques coagissant avec le programme d'ordinateur mémorisé dans ces composants matériels Le problème de la liaison correc- te par interface entre le matéri el et le logiciel a toujoure été un problème assez complexe et prenant beaucoup de temps. Le procédé et le dispositif selon l'invention permettent au concepteur des appareils, de spécifier l'interface matériel/ logiciel dans un langage évolué selon un mode dialogué On traduit alors ces spécifications en un code exécutable par l'ordinateur lié aux appareils ainsi qu'en d'autres instruc- tions devant être exécutées par les systèmes d'édition de liens/chargement de programme Cela réduit par conséquent à quelques minutes un processus de développement qui pourrait sinon prendre plusieurs jours ou même plusieurs semaines. Lorsque l'on utilise un langage évolué tel que le Pascal, le programme n'est pas lié à un type de machi- ne particulier, en raison de la nature du langage Les pro- grammes sources en Pascal ne changent pas, quel que soit le calculateur industriel ou l'ordinateur principal sur lequel ils doivent être utilisés Cependant, avec le Pascal classi- que, il n'existe aucun moyen diiect de spécifier les exi- gences requises dépendant de la mise en oeuvre, telles que des vecteurs d'interruption, des sous-programmes de relan- ce ou une configuration de mémoire. 2 2535487 Il serait possible de développer un sous- programme de langage d'assemblage(pour relier le programme Pascal au matériel prototype) et un fichier d'instructions de l'éditeur de liens (de manière à spécifier la configura- tion de mémoire concernée) Pour cela il serait nécessaire d'avoir la connaissance détaillée des exigences concernant l'assembleur, l'éditeur de liens et l'interface du Pascal. Cette tâche prend du temps, et, avec un nombre aussi impor- tant de détails secondaires devant être pris en compte, des erreurs sont inévitables On ne connait aucun dispositif de l'art antérieur permettant de générer automatiquement les instructions de l'éditeur de liens et les fichiers objets de configurations. Il serait souhaitable de disposer d'un dis- positif permettant de fournir une liste des éléments qu'il est nécessaire de spécifier pour conformer un programme à un prototype tout élément allant du nom du programme objet compilé jusqu'à l'adresse o le programme commence l'éxécu- tion Ensuite, sur la base des réponses formulées, ce systè- me produit le fichier objet des configurations et les instruc- tions de l'éditeur de liens nécessaires pour conformer le prototype considéré. Si un tel dispositif utilise des pseudo- instructions en langage évolué, il est possible de décrire le prototype d'une manière plus commode et avec un moins grand nombre d'erreurs De même, le dispositif peut également véri- fier la validité des instructions formulées, ce qui permet d'éliminer des erreurs qui ne pourraient pas être décelées avant un certain temps On estime que la présente invention fournit un tel dispositif. Conformément à la forme de réalisation re- présentée, le système de commande d'intégration (I dégage le concepteur des appareils informatisés de l'obli- gation de concevoir et d'éliminer les erreurs de centaines ou de milliers de lignes d'un code en langage machine ainsi _ 3 _ t 53548 ? -3- que d'avoir à se familiarier avec des systèmes de plus en plus complexes d'édition de liens/chargement requérant des douzaines d'instructions spécifiques dans un langage spé- cial d'instructions de l'éditeur de liens. La présente invention fournit un procédé et un dispositif permettant d'intégrer un programme en lan- gage évolué, aux limitations du point de vue matériel d'un processeur prototype sélectionné Ceci est réalisé automa- tiquement en collaboration avec le concepteur de manière à préparer un fichier source qui inclut les spécifications de configuration pour le logiciel, le matériel et les interrup- tions, pour un processeur prototype sélectionné Ce procédé inclut également le traitement du fichier source produit ci- dessus de manière à générer un fichier d'instructions de l'éditeur de liens et un fichier objet de configurations. Le fichier d'instructions de l'éditeur de liens commande le processus d'enchaînement au programme en langage évolué avec le fichier objet de configurations pour produire un module de chargement exécutable par le processus prototype Pendant l'enchaînement, des sous-programmes-sélec- tionnés provenant de la bibliothèque des temps d'exécu- tion pour le langage évolué particulier doivent être égale- ment insérés, si cela est nécessaire. La coopéracion avec le concepteur inclut la demande à ce dernier des entrées nécessaires en ce qui con- cerne les spécifications du logiciel, du matériel du proces- seur prototype et des interruptions, à la suite de quoi, en réponse à ces entrées, un fichier source se trouve créé. Le fichier objet de configurations men- tionné ci-dessus inclut des vecteurs d'interruptionsdes sous programmes de traitement des interruptions, un sous- programme de remise à l'état initial et un sous-programme d'initialisation du programme pour le processeur prototype. -4 - D'autres caractéristiques et avantages de la présente invention ressoritont de là description don- née ci-après prise en référence aux dessins annexés, -sur lesquels la fig 1 représente un organigramme du système de commande d'intégration selon la présente inven- tion, et, la fig 2 représente un schéma-Jbloc sim- plifié d'un terminal interconnecté à un ordinateur princi- pal, mettant en oeuvre la forme de réalisation selon la pré- sente invention. Lorsqu'on utilise un langage évolué, tel que le Pascal, pour produire un programme indépendant du type de machine, le code produit par le compilateur ne peut pas être exécuté directement Les codes spécifiques dans la bi- bliothèque des temps d'exécution, doivent être enchaînés avec le code compilé En fonction des beoins en matériel et en logiciel du système du processeur prototype, ce dernier doit être initialisé pour le programme Il faut indiquer à l'édi- teur de liens o mémoriser le code produit dans la mémoire du système processeur prototype. Le procédé de commande d'intégration logi- ciel/matériel selon la présente invention fonctionne d'une manière générale comme représenté sur l'organigramme de la fig 1 Le bloc 2 représente les spécifications, établies en collaboration avec le concepteur, des configurations du ma- tériel, du logiciel et des interruptions du prototype en réponse aux interrogations provenant du programme guidé- opérateur du bloc 4 Ces spécification sont ensuite utili- sées par le programme guide-opérateur 4 pour produire le fichier source d'intégration du bloc 6 Le fichier source du bloc 6 est traité par le processeur (bloc 8) de manière à fournir le fichier d'instructions de l'éditeur de liens (bloc 12) et le fichier objet des configurations (bloc 10). 253548 i -5- Le fichier objet du Pascal (bloc 14), le logiciel devant être mis en oeuvre sur le système processeur prototype ainsi que la bibliothèque de soutien des temps d'exécution du Pascal (bloc 16), le fichier objet de confi- gurations (bloc 10) et le fichier des instructions de l'é- diteur de liens (bloc 12) sont mis en liaison avec l'éditeur de liens 18 Dans l'éditeur de liens 18, le fichier objet de configurations est enchaîné au fichier objet du Pascal et à la bibliothèque de soutien des temps d'exécution Sous la commande du fichier d'instruction de l'éditeur de liens, l'é- diteur de liens 18 fournit un fichier de chargement (bloc 20), qui peut être exécuté par le système processeur prototype spécifié en réponse au programme guide-opérateur 4. Le fichier objet de configurations (bloc 10) comporte des vecteurs d'interruption, des sous-programmes du traitement des interruptions, un sous-programme de remise à l'état initial et un sous-programme d'initialisation du pro- gramme pour le système processeur prototype spécifié Le fi- chier des instructions de l'éditeur de liens (bloc 12) produit pour le système processeur prototype particulier associe le fichier objet du Pascal (bloc 14), le fichier objet des configurations (bloc 10) et des bibliothèques appropriées de soutien des temps d'éxécution Le fichier des instruc- tions de l'éditeur de liens (bloc 12) arrange également le code résultant conformément à l'agencement de la mémoire du système processeur prototype, comme cela est spécifié en ré- ponse au programme guide-opérateur 4. Afin que le dispositif de commande d'inté- gration fonctionne, il est nécessaire que les éléments de base des différents systèmes processeurs prototypes soient inclus en tant que paramètres de travail Ces paramètres comprennent des informations telles qu'une capacité maxi- mux et des configurations de mémoire, des procédures d'in- terruption etc Pour ce qui concerne la description qui va suivre, on prendra des exemples d'un dispositif de comman- de d'intégration qui peut relier par interface un programme -6- en langage Pascal à n'importe lequel des microprocesseurs suivants: 8086, 8086/8087, 8088 et 8088/8087. Avant que le fichier objet du Pascal (bloc 14) produit par un compilateur puisse être exécuté, il doit être complété par le fichier objet de configurations (bloc ) produit par le dispositif de commande d'intégration Si le concepteur-programneur connait déjà des détails du système processeur prototype, il peut créer et traiter un fichier source d'intégration (bloc 6) du système de commande d'inté- gration avant même de commencer à effectuer la programmation en Pascal En réalité, le fichier source d'intégration (bloc 6) du système de commande d'intégration fournit une description concise pouvant être lue par l'utilisateur, de l'interface matériel/logiciel, et peut être utilisé en tant que document de conception. Cependant, il est vraisemblable que le logiciel sera développé en parallèle avec le matériel et que des parties du programme seront testées avant que l'ensemble du programme ne soit développé Pour des essais de parties du programme en mode d'émulation, le fichier objet implicite de configurations du système de commande d'intégration et le fichier des instructions de l'éditeur de liens peuvent être utilisés Etant donné que des sous-programmes de trai- tement des interruptions sont ajoutés au programme et que ce dernier est transféré au système processeur prototype, le fichier source d'intégration (bloc 6) du système de commande d'intégration sera créé et modifié de manière à s'adapter à l'environnement variable du programme. Lorsque le système de commande d'intégra- tion est lancé, le programme guide-opérateur 4 interroge l'utilisateur pour obtenir l'information concernant la configu- ration du système processeur prototype Le tableau 1 repré- sente un jeu typique d'interrogations, de réponses de l'uti- lisateur et une zone de commentaires formant un fichier sour- ce d'intégration typique (bloc 6), chaque commentaire étant précédé du signe (;) - 7 2535487 Interrogations Réponses Remarques-commxentaires :This first directive is just a title. PASCALCON'FIGURATION BETITER MOUSETRA Pl These directives describe the processor configuration ; and meamry layout. HARDWAREC O NFIGURATICON 80) 86-8087; 8086 CPU with 8087 NDP INSTRUCTIONSROM ( 0040 OH,0 07 FFFH); 31 K for executable code CONSTANTS ROM ( 08000 H,08 FFFH); 4 K for RO Mable data GLOBALVARRAM (O 9 OOOH, OCFFFH); 16 K for variable data HEAPSTACKRAM (ODOOOH, OEFFFH); 8 K for heap and stack RESET IMEMORY YES;also memoury at FFFFO This directive tells tdhether the pr'ogram uses OS/40 SV Cs. SERVICE CALLS NONE These directives specify the abject and library files that make up the progran. SOFTWARECONFIGURATION /usr/thomase/mno, etrap/main po MODULE /usr/those/mouxsetrap/cheesemod po MODUXLE /usr/thcmse/mousetrap/firstaid po LIBRARY /usr/boratioa/m K 1 uselib FILE SUPPORT NONE These directives describe the interrupt ccnfiguration, if any. ITr ERRUPTCONFIRURATION ROM; Set up interrupt vectors INTERRUPTTYPESUSED 2,4 l 32,39 J in ROM for types 2,4,32-39. SAVEFLOATINGPOINT NO;Generate 8087 save and re- EXCEPT FOR 32,34;store code for types 32,34. FAULTNOTIFICATION BADINTERRUPT; List interrupt VECTIOR NMv I,INLINE, 2; service routines VECTOR OVERFLJDW,4;and associated- VECTOR ADJUSTCHEESE,32;interrupt types. VECDTOR ADJ UST SPRING, 34;BAD INTERRUPT VEX 2 TOR TIMER,OWNCODEJ 36,39 l handies 33,35 This directive tells whiere pr'ogram execution begins. RESTARTLABEL PASCAL BEGIN END Tableau i -8- Le programme guide-opérateur (bloc 4) du système de commande d'intégration est un programme en mode dialogué qui crée le fichier source d'intégration du système de commande d'intégration Le programme guide-opérateur 4 pose des questions concernant le système processeur prototype, les fichiers objets et la configuration des interruptions, et établit le fichier-conformément aux réponses. Lorsque le système de commande d'interrup- tion est appelé, le processeur 8 introduit lui-même et affi- che un menu d'options à choisir Dans le "mode d'interroga- tions", le programme guide-opérateur 4 commance à poser des questions et à produire le fichier source d'intégration Aus- sitôt après que le système de commande d'intégration a été appelé, le processeur 8 crée en premier un fichier source d'intégration implicite, comme représenté dans le tableau 3, puis le codifie conformément aux spécifications du concep- teur. Comme indiqué ci-dessus, le fichier source d'intégration est envoyé au processeur 8 pour générer le fi- chier d'instructions de l'éditeur de liens (bloc 12) et le fichier objet de configurations (bloc 10) Le tableau 2 est un fichier typique d'instructions d'éditeur de liens, qui serait produit à partir du fichier source d'intégration du tableau 1. Lorsque le processeur 8 du système de com- mande d'intégration s'arrête de lire le fichier source d'in- tégration (bloc 10),il appelle l'assembleur de l'ordinateur principal de manière à former le fichier de configurations. (bloc 10) et le listage provenant du fichier source d'intégra- tion (bloc 6) est automatiquement effacé une fois que l'as- sembleur a terminé. Si le processeur 8 du système de commande d'intégration détecte une erreur quelconque dans le fichier source d'intégration du système de commande d'intégration, il ne produit pas le fichier d'instructions de l'éditeur de liens ou le fichier objet de configurations, et le listage présente uniquement les pseudo-instructions du système de commande d'in- tégration et les messages d'erreurs associés. 9 - Interrogations PASCAL CONFIGURATION HARDWARE CONFIGURATION INSTRUCTIONS ROM CONSTANTS ROM GLOBAL VAR RAM HEAP STACK RAM RESET MEMORY SERVICE CALLS SOFTWARE CONFIGURATION MODULE LIBRARY FILE SUPPORT INTERRUPT CONFIGURATION RESTART LABEL END Fichier source d'intégrati inmplicite Default Configuration l 00060 H, 07 FFFHl l 08000 H,08 FFFHl l 09000 H,OD 7 FFHIl lOD 800 H,OFFFFHl NO DEFAULT NONE NONE NOUE DEFAULT NOE - PASCAL BEGIN Tableau 3 - Instructions de l'éditeur de liens -O moxuse io- -D STKEBASEQQ=-OEFFFH -D HOEAPBASWQQ=-ODOOOH -m INSTRQQ ROM= 0040 H-07 FFFH -mn CONSTQQ RO Vi= 08000 H-08 FFFH mn DATAQQ RAM= 09000 H-OCFFFH -L class=INSTRQQ range INSTR(Q ROM 1 -L class=CONST(Q range CONSTQQ ROM -L class=DATAQQ range DATAQQ RAM -0 /usr/thomrase/rmcusetrap/mfain po -0 /usr/thomase/rmousetrap/cheesemod po -0 /usr/thomase/mousetrap/firstaid,oo -0 /usr/horatioa/mouisel ib -D CODEBASEQQ=-0400 H -D DATABASEQQ=-08000 H -0 /lib/8086/pas fp 87 scsd -0 /lib/8086/pas rts scsd. -o /lib/8086/pas err scsd -0 /lib/8086/pas noio scsd -0 /lib/8086/pas conv scsd -x PASCAL BEGIN cormmentaires ajoutés Link in ICS object file. Define boundaries for stack and heap. Define mewrry areas. Assign programn sections to their merroryv areas. Link in user' S object files and library. Define code segment and data segnent - Link in Pascal runtime support libraries. Define transfer acddress. Listage typique de fichier des instructions de l'éditeur de liens Le fichier objet de configurations (bloc 10 du système de commande d'intégration réalise les tâches sui- vantes il établit les vecteurs d'interruption; il établit les sousprogrammes de trai- tement des interruptions; il établit un sousprogramme de remise à l'état initial; il établit les sous-programmes d'initia- tion du programme. Le système de commande d'intégration fournit deux types de code pour réaliser ces tâches code de traitement des interruptions des vecteurs d'interruption et les sous- programmes de sauvegarde/régénération des registres qui peuvent être utilisés pour le traitement des interruptions. code d'initialisation et de remise à l'ét initial code qui initialise les regis- tres de segment (CS, DS, SS, ES), l'indi- cateur de pile, les indicateurs de groupe le registre BP,,le 8087 et le variable de mot d'état de virgule flottante Ce code peut également comporter un sous-programm appelé COPYVECTORS qui recopie les vec- teurs d'interruption d'une mémoire morte dans une mémoire vive et également un vec teur RESET qui crée le code de remise à l'état initial (une instruction JMPS) à *l'emplacement FFFFO. La majeure partie du code dans un ficher objet de configurations peut être employée pour le traitement des interruptions Un ensemble de 256 types d'interruptions sont possibles et chaque type peut posséder un sous-program- me différent de traitement des interruptions Chaque type 12 - d'interruption peut nécessiter la sauvegarde et la régéné- ration des registres des 8086 et 8087 Le code réel produit par le système de commande d'intégration dépend des choix du fichier source d'intégration. Deux sections sont produites simultané- ment pour le code de traitement des interruptions; une sec- tion contenant les secteurs d'interruption (ICS-VROM) et une section destinée à contenir le code exécutoire (ICS INSTR). (La pseudo-instruction d'assembleur "RESUME" agit à la ma- nière d'un commutateur en annonçant tout d'abord un certain code dans l'autre section). Chaque sous-programme de traitement des interruptions comporte une partie du code affectée à son traitement Le code d'assemblage pour le traitement de cha- 1-5 que interruption suit une configuration générale. La configuration générale indiquée ci-après représente une partie du listage du système de commande d'in- tégration Les mots en majuscule sont soit des pseudo-ins- tructions, soit des instructions réelles d'assemblage Les mots en minuscules sont une description de la fonction du code d'assemblage et représentent une ou plusieurs lignes tirées du listage. VECTOR INTSERVE, m RESUME ICS INSTR VECTOR$ SET $ Sauvegarde de certains registres et conser- vation du retour d'enregistrement Appel du sous-programme de traitement des interruptions Remise à zéro des registres IRET RESUME ICS VROM Création du vecteur d'interruption dans la mémoire. Sur le première ligne de listage,;VECTOR est la pseudo-instruction du système de commande d'intégra- tion qui annonce le sous-programme de traitement des inter- ruptions et le ou les types traités par ce sous-programme. INTSERVE représente le sous-programme qui traite le numéro de type d'interruption "m". La pseudo-instruction SET a pour effet que VECTOR% devient un indicateur V/f RP$ indique le début'du code de traitement des interruptions pour ce type d'interrup- tions. Le code "sauvegarde de certains registres et conservation du retour d'enregistrement" assume deux fonc- tions: il sauvegarde les registres sélectionnés et permet aux sous-programmes de contrôle d'erreurs de temps d'exécu- tion de repérer la source d'erreurs du temps d'exécution. Le code "appel du sous-programme de traite- ment des interruptions" appelle le sous-programme qui traite le type d'interruption. Le code "régénération des registres" régé- nère les registres qui ont été sauvegardés (se reporter au tableau 4 pour une liste des sous-programmes du système de commande d'intégration qui sont utilisés pour sauvegarder et régénérer les registres. L'instruction IRET ramène la commande au sous-programme interrompu. La pseudo-instruction RESUME ICS VROM a pour effet que toute ligne du code, qui suit la pseudo-ins- truction, est placée dans la section ICS VROM. Ensuite, ('"Création du vecteur d'interrup- tion dans la mémoire') un vecteur est créé dans la mémoire pour indiquer le début du code de traitement des interrup- tions Ceci est réalisé à l'aide de pseudo-instructions d'assembleur. 14 25354 t 7 Nane t Functicon SAV 86 $ t Saves 8086 registers on stack SA.V 87 $ i Saves f loating point status word (global variable FPSWQQ) and î 94-byte state of 8087 on stack RES 86 $ i Restores 8086 registers frorr stack RES 87 $ t Restores FPS Vfl QQ and 8087 state :from stack COPYVECTORS$ Copies interrupt vectors f rom RONM tto RP 1 v, Tableau 4 - La première pseudo-instruction définit l'emplacement o le vecteur d'interruption doit être placé La seconde crée la valeur du vecteur d'interruption en cet emplacement. Un code particulier est produit pour chacun des types d'interruptions dans un fichier source du système de cg mande d'interruptions typiaue Le tableau 4 répertorie les sous-programmes qui peuvent être inclus dans le code objet du système de commande d'intégration. Les types d'interruptions spécifiés avec la pseudoinstruction INTERRUPTSTYPESUSED, mais non men- tionnés dans une pseudo-instruction VECTOR, sont désignés comme étant des types d'interruptions indéfinies La pseu- do-instruction FAULTNOTIFICATION est utilisée pour spéci- fier le sous-programme des traitement des interruptions pour ces types indéfinis La pseudo-instruction RESTARTLABEL produit des vecteurs d'interruption pour ces interruptions indéfinies. Si la INTERRUPTCONFIGURATION est une mié- moire vive, les vecteurs d'interruptions doivent être créés dans une mémoire morte de constantes (CONSTANTS_ROM), puis être transférés dans la zone des vecteurs d'interruption de la mémoire vive (ICS VRAM) au moment de l'exécution La pseu- do-instruction FAULT_NOTIFICATION réserve les zones appro- priées dans la ICS VRAM pour les vecteurs d'interruption et établit le code pour transférer les vecteurs dans ces zones pendant l'initialisation du programme. Le tableau créé dans la mémoire morte ICS. VROM possède la forme représentée dans le tableau 5. 16 - t A.ddress relative to, begjirwing of ICS VROM Contents 0-1 2-5 6-7 8-8 Tableau 5 Vecteurs d'interruption dans ICS VROM address where first vector is tc, be stored first interrupt vector address where second vector is to be stored second interrupt vector address i,\bere last vc-ctor is to be stored last interrupt vector end- of-vectors flag ( 400 H) 17 - Le code d'initialisation du programme est créé par la pseudo-instruction RESTART LABEL démarrant à l'emplacement PASCALBEGIN Le code d'initialisation est exécuté au moment de l'exécution et assume les tâches sui- vantes: positionner les registres DS, SS et ES sur la base du segment de données (DATABASEQQ); positionner la valeur de l'indicateur de pile sur STKABASEQQ moins DATABASEQQ; -initialiser les indicateurs de groupe en HEAPBASEQQ; si cela est nécessaire appeler COPYVECTOR$ pour la recopie des vecteurs d'interruption depuis ICS VROM dans ICS VRAM; si cela est nécessaire, initialiser la 8087 en effectuant une FINIT et en initialisant le mot de commande; -effacer le mot d'état de virgule flottan- te variable globale; -effacer le registre BP de sorte que le sousprogramme de retour d'enregistrement sache qu'il s'agit du programme principal; et sauter au point d'entrée MAINQQ du pro- gramme principal. Le code de remise à l'état initial est une instruction JMPS, placée à l'emplacement FFFFOH, indiquant le code d'initialisation Une fois que le microprocesseur est remis à l'état initial, cette instruction JMPS provoque l'exécution du code d'initialisation. La pseudo-instruction RESTARTLABEL inclut également le code pour tous les sous-programmes liés aux, interruptions (tels que répertoriés dans le tableau 4). Si le code objet de configurations délivré par le système de commande d'intégration n'est pas adapté à l'application du système processeur prototype, le code que -18 produit le système de commande d'intégration peut être modi- fié. Lorsque le système de commande d'intégra- tion est appelé, si l'option -l (listage) ou -O (code objet) est spécifiée, et si le fichier source d'intégration du sys- tème de commande d'intégration ne contient aucune erreur, le système produit un fichier source temporaire de langage d'as- semblage à partir des pseudo-instructions dudit système Si l'option O est incluse, le système de commande d'intégration appelle l'assembleur de 8086 pour créer le fichier objet (filename io) et le listage d'assembleur (filename il) L'ap- pel de l'assembleur, que le système de commande d'intégration utilise, ressemble à ce qui suit: asm filename io filename il/lib/8086/ics mc/tmp/XXXXX Tnnnn Tnn fichier objet fichier de Définition des ma Fichier source tem- listage (si ne macros du système poraire du langage cessaire) ICS d'assemblage. L'entrée dans l'assembleur se compose de deux fichiers qui sont traités comme s'ils étaient enchaînés sous la forme d'un seul fichier Le premierfichier /lib/8086/ ics mc se compose pour sa majeure partie des définitions de macro instructions de l'assembleur, qui sont utilisées par le second fichier Le second fichier est le fichier source temporaire de langage d'assemblage que le système de commande d'intégration vient de créer Une fois que l'assembleur a terminé, le fichier temporaire est automatiquement effacé. Si l'option -O est omise, le fichier source du langage d'assemblage temporaire est sauvegardé en tant que fichier de listage (filename il) Si le concepteur dési- re modifier le code que le système d'intégration produit, il peut éditer ce fichier source ou créer une version modifiée du fichier de macro-instructions du système de commande d'in- tégration Cependant; la modification du code que le système d'intégration produit peut provoquer un enchaînement, un chargement ou une exécution incorrecte du programme considéré. 19 - Par exemple, on suppose que le concepteur désire modifier le code qui sauvegarde et régénère les re- gistres du 8086 Le code est trouvé dans ics mc, dans les macro-instructions SAV-86-INLINE$, RES-86-INLINE$, et SAVE- RESTOR Er 86 % Il crée sa propre copie de ics mc et modifie ces trois macro-instructions: cp/lib/8086/ics mc mymacros (réaliser une copie des macro- instructions du système de commande d'intégration). ed mymacros (modifier sa copie). Chaque fois qu'il appelle le système de commande d'intégration, il peut créer le fichier source de langage d'assemblage mais saute à la phase d'assemblage: ics -l myprog is (production du fichier source du langage d'a-semblage dans myprog il) Ensuite il assemble le fichier source en utilisant ses propres macro-instructions: asm myprog io myprogolist (production du ficher objet mymacros myprog il myprog io et du fichier de listage myprog list). Cette ligne de commande d'assemblage enchaîi effectivementses définitions de macro-instructions (mymacro avec le myprog il produit par le système de commande d'inté gration, puis assemble ce fichier. Le tableau 6 répertorie les macro-instruc- tions du langage d'assemblage dans le fichier icsoms et leurs fonctions. Un fichier de listage du système de command d'intégration (non représenté) est produit par le système de commande d'intégration à partir d'un fichier-source d'intégra tion du système de commande d'intégration En examinant le fichier de listage du système de commande d'intégration, il est possible de comprende le code objet de ocnfigurations qui est enchaîné dans le module de chargement exécutable qui se de roule dans le système processeur prototype. ( Name COPYVECTORS$ INITIALIZE_ 87 $ JUMPTOPASCAL$ REPORT FAULT$' RESETVECTOR$ RESTOREPSW$ RES 86 INLINE$ RES_ 87 _INLINE$ SAVEPSW$ SAVERESTORE_ 86 $ SAVE RESTORE_ 87 $ SA-V_ 86 _-N-I-E$ SAV 87 INLINE$ STARTPROGRAM$ - Fixcticn Code for subroutine COPYVECTORS$. Initializes 8087 _ Catpletes prograrm initial ization and jurps to main progran. à Calls runtime error routine to report undefined interrupt. _ Sets up reset vector at FFFFO. F Restores FPSVJQQ from stack. In-lne code for restoring 8086 registers. à Irn-line code for restoring FPSWQQ iand 8087 state. Saves FPSWQQ on stack. Code for subroutines SAV 86 $ and RES 86 $. Code for subroutines SAV 87 $ and RES 87 $. In-lne code for saving 8086 registers on stack. In-lne code for saving FPSWQQ and 8087 state on stack. Begins program initialization. Tableau 6 25354 E 7 21- Le système de commande d'intégration crée un fichier temporaire à partir du fichier source d'intégration de ce système Ce fichier est assemblé et produit un fichier objet d de configurations du système à commande d'intégration et un listage d'assemblage désigné sous le terme de fichier de listage du système de commande d'intégration. (Pendant l'assemblage, l'assembleur utilise des définitions de macroinstructions provenant du fichier /lib/8086/ics mc) Pour créer un fichier de chargement exécuta- ble, l'éditeur de liens est mis en oeuvre, avec spécification seulement du fichier d'instructions de l'éditeur de liens que le système de commande d'intégration a créé et le fichier de chargement devant être créé. En se référant maintenant à la fig 2, on y voit représenté un terminal d'ordinateur 40 et un ordinateur principal 30 Le terminal 40 comporte un tube cathodique 42, un clavier 43, un processeur 41, une mémoire 44 et un circuit de ca- dencement et de commande 45 En outre, le terminal 40 comporte un système d'entrée/sortie 46 permettant de valider les commu- nications bidirectionnelles entre le terminal et l'ordinateur principal 30. L'ordinateur principal 30 contient une unité centrale de traitement 32 qui fonctionne sous la commande du circuit de cadencement et de commande 36 En outre, l'ordinateur principal 30 comporte une mémoire 34 et un circuit d'entrée/sor- tie 38 Le circuit d'entrée/sortie 38 est le lien pour les com- munications entre l'ordinateur principal 30 et les périphériques c'est-àdire le terminal 40, une imprimante/un traceur de courbes 39 et un programmateur de mémoire morte PROM 37. En cours de fonctionnement, le sous-programme guide-opérateur et le sousprogrammme du processeur, sont mémorosés dans les mémoires 34 Lorsque le concepteur met en mar- che le système de commande d'intégration par l'intermédiaire du clavier 43 du terminal 40, le sous-programme guide-opérateur est appelé est appelé par l'unité centrale de traitement 32 à partir de la mémoire 34 Les interrogations particulières sont alors transmises au tube cathodique du terminal 40 par l'intermédiaire des systèmes d'entrée/sortie 3 et 46. 22 2535487 Le concepteur, introduit au moyen du clavier 43, ses ré- ponses qui sont alors retransmises en retour à l'unité cen- trale de traitement 32, o le sous-programme guide-opérateur formule le fichier source d'intégration Ensuite, le sous-programme du processeur est appelé par l'unité centrale de traitement 32 afin de convertir le fichier source d'intégration en fichier d'ins- tructions de l'éditeur de liens et en fichier objet de confi- gurations, comme cela a été décrit ci-dessus. Lorsque ces phases opératoires sont achevées le programme indépendant de tout type de machine, qui doit être conditionné par l'utilisation dans le système de pro- cesseur prototype, est chargé 'dans l'ordinateur principal ainsi que la bibliothèque de soutien des temps d'exécu- tion standards pour le langage avec lequel le programme est écrit Si l'ordinateur principal 30 comporte un compulateur pour le langage, le programme indépent du type de machine peut être introduit soit sous la forme source, soit sous la forme objet Dans l'exemple ci-dessus, le langage du programn- me désiré est le Pascal. Avec les quatre fichiers identifiés ci- dessus, le sous-programme de l'éditeur de liens de l'ordina- teur principal 30 enchaîne, sous la commande du fichier d'ins- tructions de l'éditeur de liens, le fichier objet de confi- gurations, le fic hier objet en Pascal, et choisit, comme étant nécessaires, les sou s-prograrmes de la bibliothèque des temps d'exécution du Pascal pour créer le module de chargement exé- cutable (fig 1, bloc 20) Le module de chargement exécutable inclut, en langage machine, l'information et les positions dans les mémoires mortes du système du processeur prototype, pour que ce système fonctionne conformément au programme contenu dans le fichier objet en'Pascal. Avec les périphériques appropriés, l'ordina- teur principal 30 peut lister le module de chargement exécu- table par l'intermédiaire d'une imprimante/traceur de courbe 39, ou tester par programme des mémoires mortes l'intermédiaire d'un programmateur de PROM 37. 23 - REVENDICATIONS ) Procédé d'intégration d'un programme en langage évolué aux limitations du matériel d'un proces- seur prototype sélectionné, caractérisé en ce que l'on prépar E en mode dialogué, un fichier source ( 6) contenant les spéci- fications de -a configuration du logiciel du matériel et des interruptions du processeur prototype sélectionné en fonction des données entrées par le concepteur et en ce que l'on traite ledit fichier source ( 6) pour obtenir, d'une part, un fichier d'instructions ( 12) de l'éditeur de liens et, d'autre part, un fichier objet ( 10) de configurations. 2 'l Procédé selon la revendication 1, caractérisé en outre en ce que l'on enchaîne le programme en langage évolué avec le fichier objet ( 10) de configura- tions sous la commande du fichier d'instructions ( 12) de l'éditeur de liens de manière à obtenir un module de charge- ment ( 20) exécutable par le processeur prototype. ) Procédé selon la revendication 1, caractérisé en ce que, pour préparer le fichier source ( 6), on interroge le concepteur afin qu'il entre les spécifica- tïons du logiciel et du matériel du processeur prototype et des interruptions, et en ce que l'on produit un fichier source ( 6) contenant ces spécifications. 4 ) Procédé selon la revendication 1, caractérisé en ce qu'en outre, on enchaîne le programme en langage évolué, le fichier objet ( 10) de configurations et les sous-programmes ( 16) choisis à partir d'une biblio- thèque de temps d'exécution pour le langage évolué sous la commande du fichier d'instructions de l'éditeur de-liens ( 12) de manière à produire un module de chargement ( 20) exécutable par le processeur prototype. ) Procédé selon la revendication 1, caractérisé en ce que le fichier objet ( 10) de configura- tions contient des vecteurs d'interruption, des sous pro- grammes de traitement d'interruptions, des sous-programmes 24 - de remise à l'état initial et un sous-programme d'initiali- sation du programme pour le processeur prototype. ) Procédé selon la revendication 1, caractérisé en ce que ledit fichier ( 12) d'instructions de l'éditeur de liens contient des sous-programmes pour l'en- chaînement du programme en langage évolué, le fichier ob- jet ( 10) de configurations et des sous-programmes appro- priés ( 16) d'une bibliothèque de soutien des temps d'exé- cution. 7 ) Dispositif de commande pour l'inté- gration d'un programme en lagage évolué avec les limita- tions du matériel d'un processeur prototype sélectionné, caractérisé en ce qu'il compoirte des moyens ( 8,30,40) pour préparer en mode dialogué- un fichier source ( 6) contenant les spécifications des configurations du logiciel du maté- riel et des interruptions du processeur prototype sélection- né en fonction des données entrées par le concepteur et des moyens ( 8,30, 40) pour traiter ledit fichier source ( 6) de manière à obtenir un fichier d'instructions ( 12) de l'édi- teur de liens et un fichier objet ( 10) de configurations. 8 ) Dispositif selon la revendication 7, caractérisé en ce qu'ilcomporte en outre des moyens ( 12) pour enchaîner le programme en langage évolué et le fichier objet ( 10) de configurations de manière à produire un module de chargement ( 20) exécutable par le processeur prototype. 9 ) Dispositif selon la revendication 7, caractérisé en ce que les moyens de préparation en mode dialogué comprennent des moyens ( 34,32,38, 46,41,42,43) pour interroger le concepteur afin qu'il entre les spécifications du logiciel et du matériel du processeur prototype et des interruptions, et des moyens pour produire un fichier source ( 6) contenant ces spécifications. 5 47 ) Dispositif selon la revendication 7, caractérisé en ce qu'il comporte en outre des moyens pour enchainer le programme en langage évolué, le fichier objet ( 10 > de configurations et des sous-programmes ( 16) sélec- tionnés à partir d'une bibliothèque de temps d'exécution pour le langage évolué, sous la commande du fichier d'ins- tructions ( 12) de l'éditeur de liens, en vue de produire un module de chargement ( 20) exécutable par le processeur pro- totype. 11 ) Dispositif selon la revendication 7, caractérisé en ce que ledit fichier objet ( 10) de configu- rations comporte des vecteurs d'interruption, des sous- programmes de traitement des interruptions, un sous-pro- gramme de remise à l'état-initial et un sous-programme d'i- nitialisation du programme pour le processeur prototype. 12 ) Dispositif selon la revendication 7, caractérisé en ce que ledit fichier ( 12) d'instructions de l'éditeur de liens comporte des sous-programmes pour enchaî- ner le programme en langage évolué, le fichier objet ( 10) de configurations et des sous-programmes ( 16) appropriés d'une bibliothèque de soutien des temps d'exécution.