Brevet FR2573228A1 — publié le 19860516

Procédé pour le traitement de mots d'instruction codés machine et ordinateur pour l'exécution du procédé. La présente invention concerne un procédé pour le traitement de mots d'instruction codés machine au moyen d'un ordinateur pourvu d'une mémoire pour le stockage des dits mots d'instruction qui comprennent chacun une partie code opération et au moins une partie descripteur d'opérande, les parties code opération appartenant à un ensemble fini qui est subdivisé en une première classe et en une seconde classe, ce procédé comprenant les pas suivants: -(a) prélèvement, sous la commande de l'ordinateur, d'un premier mot d'instruction indiqué par un compte du compteur de programme; (b) décodage de la partie code opération du premier mot d'instruction et recherche de la classe à laquelle appartient la partie code opération du premier mot d'instruction; (ci) exécution des opérations données par le premier mot d'instruction pour des mots d'instruction comportant une partie code opération appartenant à la première classe; (c2) pour des mots d'instruction comportant une partie code opération appartenant à la deuxième classe, exécution des pas suivants: (c2-1) stockage du compte du moment du compteur de programme dans un registre de compteur de programme supplémentaire réservé à cet effet; (c2-2) génération, sur base de la partie code opération provenant du premier mot d'instruction, d'une adresse de mémoire à laquelle un deuxième mot d'instruction est situé, ce deuxième mot d'instruction étant l'instruction initiale d'une série de mots d'instruction qui déterminent la - signification du premier mot d'instruc- tion; (c2-3) réglage du compte du moment du compteur de programme sur la dite adresse de mémoire; (c2-4) traitement de la dite série d'instructions; (c2-5) réglage du compte du moment du compteur de programme sur une valeur déterminée par le compte du compteur de programme présent dans le registre de compteur de programme supplémentaire. Un tel procédé est décrit dans l'article "Ins- truction set extension" de R.L. Bains, R.L. Hoffman, G.R. Mitchell et F.G. Soltis, paru dans I.B.M. Technical Disclosure Bulletin, volume 18, n 7, décem- bre 1975, pages 2250 à 2252. Dans le cas du procédé connu, les mots d'instruction codés machine sont le résultat de procédures de traduction qui sont appli- quées à un texte de programme présenté par un programmeur. Le texte de programme est écrit dans un langage d'ordinateur connu, comme par exemple PASCAL ou FORTRAN. Le compilateur et l'assembleur de l'ordinateur (aussi appelé système d'ordinateur) traduisent le texte de programme vers un jeu de mots d'instruction codés machine, qui sont alors stockés dans la mémoire pendant le traitement du texte de programme. Un mot d'instruc- tion a, par exemple, une largeur de 32 bits. Parmi ces 32 bits, 8 bits, par exemple, sont destinés à la partie code opération et 20 bits à la partie descripteur d'opérande. Dans le cas d'une partie code opération de 8 bits de largeur, un ensemble de codes opération comprend au maximum (28=) 256 codes opération dif- férents. Dans le cas du procédé connu, cet ensemble est subdivisé en deux classes, à savoir les codes opération valides (première classe) et les codes opération invalides (deuxième classe). Le contenu de la partie code opération est déterminant pour la nature de la ou des opérations exécutées pour achever le traitement de l'instruction. Ainsi, un code opération peut, par exemple, indiquer une opération de chargement de registre ou un saut vers un sous-programme. Le décodage a pour but de convertir la partie code opération en information de commande pour le système d'ordinateur. L'ordre dans lequel les mots d'instruction sont extraits de la mémoire par l'ordinateur et traités est indiqué par le compte du compteur de programme. Dans le procédé connu, les parties code opération valides du dit ensemble ont une signification fixe qui est reconnue lors du décodage. Une partie code opération à signification fixe est exécutée après décodage de la manière connue. En fonction de la capacité du système d'ordinateur, l'ensemble de codes opération comprend beaucoup ou peu d'éléments différents. Le programmeur de système doit travailler avec l'ensemble donné de-codes opération et la signifi- cation fixe que le système d'ordinateur y attribue pendant le décodage. Le procédé connu apporte une solution au traitement de mots d'instruction au moyen d'un code opération invalide (deuxième classe). Si un code opération invalide est décodé, le compte du moment du compteur de programme est stocké dans un registre de compteur de programme supplémentaire et, sur base de la partie code opération, une adresse de mémoire est formée à partir du premier m6t' d'instruction sur base de la partie code opération L'adresse de mémoire est formée notamment en mettant, dan s un registre à décalage, des bits les plus significatifs, égal à zéro et par utilisation du code opération pour les bits les moins significatifs de l'adresse de mémoire. Sur cette adresse de mémoire est placé un deuxième mot d'instruc- 2S73228 tion qui est l'instruction initiale d'une série de mots d'instruction qui déterminent la signification du premier mot d'instruction. Ce faisant, un mot d'instruction comportant une partie code opération invalide est traduit en une instruction exécutable. Un inconvénient du procédé connu est le fait que, dans le cas de mots d'instruction qui comportent une partie code opération appartenant a la deuxième classe (code opération invalide), lors de la traduction vers une instruction exécutable et l'exécution de cette instruction, il n'est pas tenu compte de la partie descripteur d'opérande du mot d'instruction en question. La partie descripteur d'opérande d'un tel mot d'instruction est ainsi utilisée de manière inefficace de même que, par voie de conséquence, le système d'ordinateur. L'invention vise à réaliser un procédé pour le traitement de mots d'instruction codés machine, suivant lequel la partie descripteur d'opérande du mot d'instruction est disponible avec une partie code opération appartenant à la deuxième classe pour le codage _de descripteurs d'opérandes et suivant lequel, ce faisant, la liberté de choix de la signification des parties de code opération de la deuxième classe est offerte au programmeur de système. De plus, l'invention a pour but de réaliser un procédé permettant d'obtenir une efficacité supérieure aussi pour des langages de programmation supérieurs. Un procédé conforme à l'invention est caracté- risé à cet effet en ce que, pour la dite série de mots d'instruction, la partie descripteur d'opérande prove- nant du premier mot d'instruction est chargée dans un premier registre d'index par au moins un troisième mot d'instruction. Le chargement de la partie descripteur d'opérande dans un premier registre d'index rend le traitement du descripteur d'opérande possible et rend donc aussi les descripteurs d'opérande disponibles pour le codage. Grace en outre à l'utilisation d'un registre d'index, le hardware existant est utilisé pour le décodage du descripteur d'opérande. Le programmeur de système a donc la possibilité de stocker l'information à traiter dans la partie descripteur, cette information étant alors traitée par la dite série de mots d'instruction. Dans une variante, un procédé conforme à l'invention est caractérisé en ce que, pour des mots d'instruction comportant une partie code opération appartenant a la deuxième classe, au moins la partie descripteur d'opérande du premier mot d'instruction est chargée dans un deuxième registre d'index réservé à cet effet avant le réglage du compte de compteur de pro- gramme sur l'adresse de mémoire. Le fait de charger le descripteur d'opérande dans un deuxième registre d'index avant de produire l'adresse de mémoire permet d'économiser des instructions de programme provenant de la dite série de mots d'instruction. Une première forme d'exécution préférée d'un procédé conforme à l'invention est caractérisée en ce que, lors de l'exécution du troisième mot d'instruc- tion, le contenu du registre de compteur de programme supplémentaire est utilisé pour localiser, dans la mémoire, la partie descripteur d'opérande du premier mot d'instruction. Par le fait que, dans le registre de compteur de programme supplémentaire, le compte de compteur de programme du moment est stocké, il est possible de cette façon de localiser rapidement et simplement l'endroit de la mémoire o se trouve le descripteur d'opérande du premier mot d'instruction. Le descripteur d'opérande se trouve en effet dans la partie descripteur d'opérande du premier mot d'instruc- tion qui est indiquée par le compte de compteur de programme lors de l'extraction dans le pas (a) du procédé conforme à l'invention. Une deuxième forme d'exécution préférée d'un procédé conforme à l'invention est caractérisée en ce que, pour la dite série de mots d'instruction, la partie descripteur d'opérande du premier mot d'instruc- tion est traitée par au moins un quatrième mot d'instruction. Le descripteur d'opérande du premier mot d'instruction qui est stocké dans un registre d'index est traité au moyen du quatrième mot d'instruction. La partie descripteur d'un mot d'instruction à partie code opération appartenant à la deuxième classe est donc utilisée pour le codage des descripteurs d'opérandes. Une autre forme d'exécution préférée d'un procédé conforme à l'invention est caractérisée en ce que la génération de l'adresse de mémoire pour le deuxième mot d'instruction comprend les sous-pas suivants: (1) formation d'une adresse de table à partir d'une table de mémoire par addition à la partie code opération du premier mot d'instruction d'une valeur qui est stockée préalablement dans un registre d'extension d'opération réservé à cet effet; (2) adressage du mot de mémoire situé à l'adresse de table formée; (3) extraction du mot de mémoire à la dite adresse de table, ce mot de mémoire formant l'adresse de mémoire. L'utilisation d'une table de mémoire offre la possibilité d'inventorier des ensembles d'instructions spécialisés au moyen desquels sont traités des mots d'instruction qui comprennent une partie code opération appartenant à la deuxième classe. L'invention concerne aussi un ordinateur pourvu d'une mémoire pour le stockage de mots d'instruction codés machine qui comprennent chacun une partie code opération et une partie descripteur, ces parties code opération appartenant à un ensemble fini qui est subdivisé en une première et une deuxième classe, l'ordinateur comprenant, en outre, un registre de compteur de programme, un générateur d'adresse et un décodeur de code opération, ce décodeur de code opéra- tion étant pourvu de premiers moyens pour reconnaître séparément des parties code opération de la première et de la seconde classe et de seconds moyens pour, produire un signal de commande sous le contrôle d'un mot de code opération de la seconde classe reconnu, l'ordinateur comprenant, en outre, un registre de compteur de - programme supplémentaire et des- moyens de transfert, ces moyens de transfert comportant une première entrée de commande pour la réception du signal de commande et étant prévus, en outre, pour transférer, sous la commande d'un signal de commande reçu, le contenu du registre de compteur de programme vers le registre de compteur de programme supplémentaire, et le générateur d'adresse étant prévu pour générer, sous le contrôle du signal de commande, une adresse de mémoire à laquelle est situé un mot d'instruction initial d'une série de mots d'instruction pour le traitement d'une partie descripteur. Un tel ordinateur est également qualifié dans l'article précité de "Instruction set extension". Un ordinateur conforme à l'invention est caractérisé en ce qu'il est pourvu d'un registre d'extension d'opération qui comprend une deuxième entrée de commande pour la réception du signal de commande et une sortie connectée au générateur d'adresse. Le générateur d'adresse peut de cette façon être réalisé d'une manière simple lorsque le registre d'extension d'opération comporte un ensemble d'adresses ou de parties d'adresses. Il est avantageux que l'ordinateur soit en outre pourvu d'un deuxième registre d'index qui com- porte une troisième entrée de commande pour la récep- tion du signal de commande et une entrée de données connectée à la mémoire pour recevoir la partie descrip- teur d'opérance d'un mot d'instruction sous le contr8ôle du signal de commande. De ce fait, il est en outre possible d'écono- miser des instructions de programme. L'invention sera décrite ci-après plus en détail avec référence aux dessins annexes, dans lesquels: la Fig. 1 illustre un premier exemple de réalisation d'une architecture de registres d'un ordinateur-conforme A l'invention; la Fig.la illustre schématiquement le procédé conforme à l'invention, a l'aide d'un schéma synoptique; la Fig. 2 est un premier programme d'ordi- nateur à l'aide duquel une première forme d'exécution du procédé conforme à l'invention est illustrée; la Fig. 3 (I a VI inclus) illustre le résultat de l'exécution du programme d'ordinateur de la Fig. 2; la Fig. 4 (a à f inclus) illustre quelques codes opération différents et leur répartition de mots d'instruction associée; la Fig. 5 (a à f inclus) illustre quelques parties descripteur -différentes dans un mot d'instruction; la Fig. 6 illustre un deuxième exemple de réalisation d'une architecture de registres d'un système d'ordinateur conforme à l'invention; la Fig. 7 est un second programme d'ordinateur à l'aide duquel une deuxième forme d'exécution du procédé conforme à l'invention est illustrée; la Fig. 8 (I à V inclus) illustre le résultat de l'exécution du programme d'ordinateur de la Fig. 7. Un système de traitement de données ou un ordinateur qui doit remplir une tâche procédera par l'exécution d'un programme qui convient pour cette tâche. Ce programme est rédigé dans un langage de programmation connu, comme par exemple PASCAL, FORTRAN ou BASIC. Ces langages de programmation sont cependant des langages d'utilisateur qui sont tout d'abord traduits par l'ordinateur en instructions codées machine en vue de traiter le programme. La traduction du langage d'utilisateur en instructions codées machine s'effectue le plus souvent en deux pas. Un premier pas implique la traduction du langage d'utilisateur en "Assembly language" et un deuxième pas implique la traduction du "Assembly language" en "instructions machine". Le premier pas est traité par un "compi- lateur" et le deuxième par un "assembleur". Le compi- lateur et l'assembleur sont tous deux des programmes de traduction qui font partie du système d'ordinateur. Le programmeur de système a tenu compte, lors de l'élabo- ration du compilateur et de l'assembleur, de l'archi- tecture de l'ordinateur (CA = architecture d'ordi- nateur, c'est-à-dire l'aspect de la machine du point de vue du programmeur de système). En architecture d'ordinateur, on fait, entre autres, la distinction entre deux types d'architecture, à savoir les architectures HLL (High Level Language) et RISC (Reduced Instruction Set Computers). L'architec- ture HLL implique principalement que le matériel (hardware) de l'ordinateur est pourvu d'un jeu d'instructions convenant pour le traitement de langages supérieurs. La différence entre le langage d'utili- sateur et les instructions machine est ainsi réduite. L'architecture RISC implique principalement que les instructions de la machine sont si simples que le matériel peut assurer des prestations maximales. Cependant, dans le cas de l'architecture RISC, la traduction d'un programme d'utilisateur est nettement plus difficile. Les avantages de ces deux types d'architecture d'ordinateur sont à présent combinés dans un système de traitement de données conforme à l'invention. Un tel système de traitement de données comprend en fait une machine simple dont le jeu d'instructions est rendu extensible afin de pouvoir traiter efficacement des opérations du type HLL. Un système d'ordinateur conforme à l'invention comprend une unité de traitement centrale (CPU) avec, par exemple, une architecture de registres. La Fig. 1 illustre un premier exemple de réalisation d'un archi- tecture de registres d'un système d'ordinateur conforme a l'invention. Les registres R0 à R7 inclus, de même que les registres ZEROR(8), ONER(9), PCR (Program Counter Register) (B), SPR (Stack Pointer Register) (D), CCR (Condition Code Register) (E) et SEXR (Sign Extend Register) (F) sont les registres connus habi- tuels d'un ordinateur à architecture de registres classique. Les registres IPCR (Interpreter Program Counter Register) (C) et OPER (Operation Extend Registers) (A) forment une adjonction à l'unité de traitement centrale au moyen de laquelle une architec- ture de registres est étendue pour l'application de l'invention, mais il convient de noter que le registre OPER est facultatif. Dans la réalisation la plus simple, on peut se contenter du registre IPCR. L'utili- sation du registre IPCR par le système d'ordinateur pendant l'exécution d'un programme est commandée par la PARTIE OPCODE d'un mot d'instruction à traiter, appelée en bref OPCODE (Operation Code ou code opération). La Fig. 6 illustre un deuxième exemple de réalisation -d'une architecture de registres d'un système d'ordinateur conforme à l'invention. Les registres R0 à R7 inclus, de même que les registres OPER et IPCR sont identiques aux registres de même nom du premier exemple de réalisation illustrée sur la Fig. 1. Les registres (8) et (9) sont qualifiés à présent de R8 et R9. Les registres PCR (D), SPR (E) et CCR (F) remplissent la même tâche que les registres de même nom du premier exemple de réalisation, mais ont à présent un numéro d'ordre différent dans le système. Le registre VIR (B) dont la signification sera expliquée plus loin dans le présent mémoire est nouveau pour le deuxième exemple de réalisation. Dans ce système d'ordinateur, les OPCODES sont répartis en deux classes, à savoir une première classe qui contient les codes opération "normaux" et une deuxième classe qui contient les codes opération "'virtuels". Le décodeur de code opération du système d'ordinateur est implémenté d'une manière telle qu'il reconnaisse au profil de bits des codes opération la classe à laquelle ces codes appartiennent. Ainsi, par exemple, tous les codes opération qui contiennent à titre de bits les plus significatifs (MSB) la valeur "0" peuvent être reconnus comme codes opération "normaux" et tous les codes opération qui contiennent à titre de MSB la valeur "1", comme codes opération "virtuels". On obtient ainsi une répartition selon laquelle chaque classe contient autant de codes opéra- tion que l'autre. Il convient toutefois de noter que n'importe quelle autre répartition est aussi possible. A une répartition déterminée est alors chaque fois associée une implémentation bien définie du décodeur de code opération. il est clair que chaque classe doit contenir au moins un code opération. La manière selon laquelle des instructions à code opération normal- ou virtuel sont traitées par un système d'ordinateur conforme à l'invention, est illustrée schématiquement à l'aide du schéma synoptique de la Fig. la. Après la lecture (50) d'un mot d'instruction, il est examiné (51) si le code opération appartient à la classe des codes opérations virtuels ou à celles des normaux. Dans le cas o le décodeur de code opération a décodé un code opération appartenant à la classe des codes opération normaux (N), l'instruction qui y est associée est traitée de la manière connue (52). Dans le cas cependant o le décodeur de code opération a décodé un code opération appartenant à la classe des codes opération vituels (V), les opérations mentionnées ci- dessous sont chaque fois exécutées, indépendamment du contenu de l'instruction qui y est associée: reg EIPCRJ: = reg (PCRJ (53) reg EPCRJ: = meem úreg COPER3 + opcodej3 (54) Dans ce cas, l'opération reg ( IPCR J: = reg PCRJ signifie que le contenu du registre PCR est transcrit dans le registre- IPCR (: = signifie dans le langage de programmation "devient") en d'autres termes, l'adresse de l'instruction qui est indiquée par le compteur de programme (compte du moment du compteur de programme) est chargée dans le registre IPCR. L'opération reg [PCR]: = mem úreg (OPER] + opcodej signifie que dans le registre PCR est chargé le mot de mémoire (dans ce cas-ci un mot d'adresse) qui est stocké à l'emplacement de mémoire dont l'adresse est reg úOPER_ + opcode. L'adresse reg /OPER7 + opcode est obtenue par addition du contenu du registre OPER et de la valeur qui lui est donnée dans la partie code opération du mot d'instruction. Cette opération reg PCR: = mem /reg OPERJ + opcodej implique donc qu'une nouvelle adresse pour le compteur de programme est chargée dans le registre PCR. Il est aussi possible de générer cette nouvelle adresse par des opérations autres que l'opération reg [PCRJ: = mem úreg [OPER_ + opcodej. D'autres opérations possibles sont, par exemple: a) Reg [ PCRJ: = reg OPERJ + opcode Dans ce cas, la nouvelle adresse est déterminée directement sans qu'une opération de lecture de la mémoire ait lieu. b) Reg (PCRJ: = opcode + adresse fixe Il s'agit d'une opération qui est appliquée lorsque, comme mentionné plus haut, on n'utilise pas le registre OPER. La nouvelle adresse est ici formée par addition d'une adresse fixe à la partie code opération du mot d'instruction. c) Reg (PCRJ: = mem Eopcode + adresse fixe Dans cette opération, on n'utilise pas non plus le registre OPER. Cette opération comporte par contre une opération de lecture- de mémoire. Sur cette nouvelle adresse pour le compteur de programme se trouve à présent une première instruction d'une série d'instruc- tions qui interprètent la signification du mot d'instruction à code opération virtuel (55). Cette série d'instructions est toujours terminée par une dernière instruction du programme qui suit immédia- tement l'instruction à code opération virtuel qui a opéré le traitement de la dite série. Une telle der- nière instruction est, par exemple, une instruction de la forme: reg [PCR: = reg IPCRJ (56) Dans ce cas, le compte du compteur de programme est 2573228- ramené à la valeur qui était la sienne au début de l'exécution de l'instruction à partie code opération virtuel. L'effet utile d'un code opération virtuel est que, pour chaque code opération virtuel, une partie de code est exécutée. Dans cette partie de code ("l'inter- préteur" du code opération virtuel), il est possible de se référer d'une manière efficace au(x) descripteur(s) d'argument(s) du code opération virtuel si IPCR est utilisé comme registre d'index. Si le système d'ordinateur à à présent une architecture de registres telle qu'illustrée sur la Fig. 6, lors du décodage d'un code opération appar- tenant à la classe de codes opération virtuels, à côté des opérations (53) et (54), une autre opération (150) est encore exécutée, à savoir: reg /7vIRJ: = EI.R. j7. Le contenu d'au moins la partie descripteur de position du registre d'instruction EI.R.2 du système d'ordi- nateur est ainsi transcrit dans le registre VIR. Une instruction avec un code opération virtuel se distingue d'une instruction JUMP SUBROUTINE qui possède un code opération normal principalement par le fait que, pendant l'exécution du sous-programme, le compteur de programme est temporairement stocké dans la mémoire. D'une part, l'opération d'écriture dans la mémoire nécessaire à cet effet occupe du temps de traitement supplémentaire et, d'autre part, il n'est de ce fait pas possible (sans temps de traitement supplé- mentaire) d'utiliser l'ancien compte du compteur de programme comme registre d'index pour l'extraction du ou des descripteurs d'arguments. La Fig. 2 illustre un premier programme d'ordinateur à propos duquel une première forme d'exé- cution du fonctionnement d'un système d'ordinateur conforme à l'invention sera expliquée avec plus de détail. Le programme n'est donne qu'à titre d'exemple. I1 est clair qu'un système d'ordinateur conforme à l'invention n'est pas limité à l'exécution de program- mes de ce type uniquement. La Fig. 2 comporte cinq colonnes. Dans la première colonne se trouvent les adresses de mémoire des instructions. La deuxième colonne contient les instructions écrites en code machine (notation hexadécimale). La troisième et la quatrième colonne contiennent les instructions écrites en "Assembly language" et la cinquième colonne contient le commen- taire qui va de pair avec l'instruction. Avant d'approfondir la Fig. 2, on décrira tout d'abord quelques aspects généraux des instructions avec référence aux Fig. 4 et 5 en vue de rendre plus claire la lecture et le traitement du programme. Les Fig. 4(a) à (f) montrent des codes opération et leur répartition des mots d'instruction associée. Une instruction telle que notée en code machine (Fig. 4 ou deuxième colonne de la Fig. 2) comporte 32 (4x8) bits. Les bits 31 à 24 inclus contiennent toujours le code opération. Etant donné que la partie code opération contient 8 bits, 28=256 codes opération différents sont possibles. Dans l'exemple de la Fig. 2, les codes opération 00 à F8 inclus appartiennent à la classe des codes opération virtuels et les codes opération F9 a FF inclus appar- tiennent à la classe des codes opération normaux. La répartition des autres bits (0 à 23 inclus) dépend du type et de la classe auxquels le code opération appartient. La Fig.4(a) montre le profil d'une instruction qui, à titre de code opération, comporte un des codes opération normaux LOADADRESS (F9), LOADVALUE (FA) ou STORE (FB). Pour cette instruction, les bits 20 à 23 inclus comportent le numéro du registre (RGN) auquel se rapporte l'opération donnée par le code opération, et les bits 0 à 19 inclus comprennent le description d'emplacement (LCDSC). On décrira plus loin le contenu de ce descripteur d'emplacement. La Fig. 4(b) montre le profil d'une instruc- tion qui, à titre de code opération, comporte le code opération normal MONADIC (FC). Dans le cas de cette instruction, les bits 20 à 23 inclus comprennent le numéro du registre (RGN) auquel l'opération indiquée par le code opération se rapporte et les bits 16 à 19 inclus indiquent la nature de l'opération MONADIC (MNPC) (incrémentation, décrémentation, etc. ). Les autres bits ne contiennent pas d'information pertinente pour l'invention. La Fig. 4(c) montre le profil d'une instruc- tion qui, à titre de code opération, comporte le code opération normal DYADIC (FC). Pour cette instruction, les bits 20 à 23 inclus comprennent le numéro du premier registre (RGN) et les bits 12 à 14 inclus le numéro du deuxième registre (RGT) auquel se rapporte l'opération indiquée par le code opération. Les bits 16 a 19 inclus indiquent la nature de l'opérationDYADIC (DPC) (addition, soustraction, ET logique, etc.). Les autres bits ne comprennent pas d'information pertinente pour l'invention. Les Fig. 4(d) et 4(e) montrent le profil d'instructions qui, a titre de code opération, compren- nent respectivement le code opération normal JUMP SUBROUTINE (FE) et JUMP CONDITIONAL (FF), la condition (CND) étant donnée pour l'instruction à code opération FF par les bits 20 à 23 inclus. Les bits O à 19 com- prennent chaque fois le descripteur d'emplacement (LCDSC). Lorsque le système d'ordinateur décode à présent le code opération "FE", les opérations sui- vantes sont exécutées: mem Creg [SPR: = reg EPCR] reg [SPR: = reg SPR] + 1 reg E SPRJ: = effa (LCDSC) O "effa" signifie "adresse effective". Lors du décodage du code opération "FF", dans le cas o la condition (CND) est satisfaite, l'opération suivante est exécutée: reg [PCRJ: = effa (LCDSC) Le compte du compteur de programme (Reg PCRJ) n'est pas retenu, étant donné qu'aucun retour ne se produit dans le cas d'un Jump Conditional. La Fig. 4(f) montre le profil d'une instruc- tion code opération virtuel (00;...; F8). Les bits 0 à 23 inclus sont dans ce cas utilisés en dépendance du programme d'interprétation. On reviendra sur ce point plus loin dans la description. Le descripteur d'emplacement décrit l'adresse appartenant à l'opérande de l'instruction. Le système d'ordinateur est pourvu de moyens matériels (hardware) pour interpréter ce descripteur d'emplacement. La Fig. 5 illustre plusieurs exemples de parties descrip- teurs d'emplacement dans un mot d'instruction. Pour chaque descripteur d'emplacement, les bits 16 à 19 inclus indiquent chaque fois la nature du descripteur qui sera décrit ci-après pour chacune des parties (a) à (f) incluse de la Fig. 5. (a) En (a) sur la Fig. 5, le mot "000Q" désigne une opération de registre ayant trait au registre donné par les bits 12 à 15 inclus. Le contenu des bits 0 à 11 inclus est sans importance pour la description de l'invention. (b) En (b) sur la Fig. 5, le mot "0001" désigne une opération d'index normale. L'adresse résultante est a + Reg [ n] o a est le nombre donné par les bits 0 a 11 inclus et n est le numéro de registre donné par les bits 12 à 15 inclus. (c) En (c) sur la Fig. 5, le mot "0010" désigne une opération d'index précédée d'une opération d'adap- tation (pre-adjust indexed). Une telle opération se déroule en deux pas l'adresse donnée par a + Reg En et en plus Reg En: = a + Reg n J (a et n ont les mêmes significations que celles citées plus haut). (d) En (d) sur la Fig. 5, le mot "0011" désigne une opération d'index, suivie d'une opération d'adap- tation (post-adjust index). Une telle opération se déroule à nouveau en deux pas: l'adresse est donnée par Reg E n j; et en plus Reg E nJ: = a + Reg n3 (avec une signification analogue pour a et n). Dans le cas d'une opération d'index qui est accompagnée d'une opération d'adaptation, on détermine donc chaque fois une valeur et une adresse. L'utilisation de l'adresse est déterminée par la partie code opération. (e) En (e) sur la Fig. 5, le mot "0100" désigne un nombre dont la valeur est donnée par les bits 0 a inclus ("immédiat"). (f) En (f) sur la Fig. 5, le mot "1111" désigne une opération d'interprétation. Le contenu du registre dont le numéro est donné par les bits 12 à 15 inclus est considéré comme descripteur d'emplacement. Le contenu des bits 0 à 11 inclus est destiné à des données a utiliser dans la série d'instructions introduite par une instruction a partie code opération virtuel. Le programme d'ordinateur illustré sur la Fig. 2 sera à présent exécuté avec référence aux données des Fig. 4 et 5. Le résultat de l'exécution de ce programme est illustré sur la Fig. 3 (I à VI inclus). Dans la partie suivante de la description sera mentionnée, chaque fois à cÈté de l'instruction et entre parenthèses, la partie de la Fig. 3 dans laquelle l'instruction en question est traitée. La première instruction du programme d'ordi- nateur est située à l'emplacement de mémoire à adresse 0 et est la suivante: FAD47FFF; LOADVAL OPER,# $7FMF (Figure 3(I) instro 1). Le code opération "FA" indique qu'il s'agit ici d'une instruction a code opération normal (en (a) sur la Fig. 4) et en particulier de l'instruction "LOAD VALUE". Le numéro de registre "D" indique que le registre à utiliser est le registre SPR (Fig. 1). Le descripteur d'emplacement comprend le nombre "47FFF", dans lequel le chiffre 4 indique qu'il s'agit d'un descripteur d'emplacement du type tel qu'indiqué en (e) sur la Fig. 5, c'est-à-dire un nombre (immediate) et en particulier le nombre 7FFF. Cette instruction signifie donc: "Charger (FA) dans le Stack Pointer Register (SPR) (D) le nombre (4) de valeur 7FFF". Dans le registre de compteur de programme (PCR), le nombre 1 est à présent stocké, ce qui signifie que la première instruction suivante est située dans la mémoire 1. Il convient de noter que, dans cet exemple de réalisation, le registre ZEROR est chargé chaque fois de la valeur "00000000" et que le registre OWER est chargé chaque fois de la valeur "00000001". Les valeurs constantes O et 1 sont fréquemment utilisées. Il est donc commode de disposer de ces valeurs constantes dans un registre grâce a quoi elles peuvent être retirées ou extraites par des opérations de registre simples. Sur l'emplacement de mémoire 1 est située- la deuxième instruction du programme d'ordinateur. Cette deuxième instruction est la suivante: FAA47F00; L/DVAL OPER,#$7Fo00 (Figure 3(I), instr. 2). Comme dans le cas de la première instruction, il s'agit d'une instruction à code opération normal "LOADVAL". Le numéro de registre "A" désigne le register OPER (Fig. 1). Cette instruction signifie donc: "Charger dans le Operation Extend Register (OPER) le nombre de valeur 7F00". Dans le registre PCR, le nombre 2 a sur ces entrefaites été chargé. La troisième instruction est la suivante: FE018400; JSR $400+EZERDR] (Figure 3(I), instr. 3). Le code opération "FE" désigne l'instruction à code opération normal "JUMP SUBROUTINE" (en (d) sur la Fig. 4). Le descripteur d'emplacement comprend le nombre "18400", dans lequel le chiffre "1" indique qu'il s'agit d'une opération d'index normale (en (b) sur la Fig. 5). Le chiffre "8" désigne le registre ZEROR et le nombre "400" indique le déplacement. L'exécution de cette instruction donne à présent a) memO reg SPR3 = reg r PCRJ mem 7FFF]: = 00000003 Cela signifie qu'à l'emplacement de mémoire à adresse 7FFF, le nombre 3 est inscrit. Ceci impli- que que l'adresse de l'instruction suivante (adresse de mémoire 3) est retenue à l'emplacement de mémoire 7FFF. b) reg [7SPRJ: = reg (SPRJ + 1 reg SPRJ: = 00007FFF + 1 = 00008000 c) reg LPCR]: = effa (LCDSC) effa (LCDSC) désigne le contenu effectif du des- cripteur d'emplacement qui, pour cet exemple, est donné par 400 + ZERORJ. Etant donné cependant que 00000000 se trouve dans le registre ZEROR, effa (LCDSC) = 00000400 reg CPCR: = 00000400 Ceci implique que le compteur de programme indique a présent l'emplacement de mémoire à adresse 400. Un saut vers l'emplacement de mémoire portant l'adresse 400 est donc effectué. La quatrième instruction, située à l'empla- cement de mémoire portant l'adresse 400, est la suivante: FA03B001; LYOADVAL RD, PCR++1I 7FFFFFFF: 7FFF'FFFF (Figure 3(I), instr. 4). Le numéro de registre de cette instruction à code opération normal LOAD VALUE est "0". Dans le descrip- teur d'emplacement de valeur "3B001", le chiffre 3 désigne une opération d'index, suivie d'une opération d'adaptation (en (d) sur la Fig. 5). La lettre B indique que l'adaptation a trait au registre PCR (Fig. 1) et le nombre "001" indique l'importance de l'adaptation. Cette instruction signifie donc: Reg 0: = mem reg PCR 7 Reg 0: =7 mem 401 Reg [0: = 7FFFFFFF Charger dans le registre R0 la valeur qui est stockée à l'adresse de mémoire qui est donnée par le contenu du registre PCR et augmenter ensuite le contenu du registre PCR du nombre "001". Dans le registre PCR, la valeur (400 + 1 =) 401 est stockée. A l'adresse 401 est présente la valeur 7FFFFFFF qui est à présent stockée dans le registre R0. L'opération d'adaptation fournit alors ensuite: reg (PCR: = reg CPCR] + 1 reg E PCRJ: = 401 + 1 reg úPCRJ: = 402 La cinquième instruction située à l'empla- cement de mémoire 402, est la suivante: FAB2DFFF; LDVAL FCR,-1++ESPRJ (Figure 3(I), instr. 5). Le numéro de registre "B" indique le registre PCR. Dans le descripteur d'emplacement à valeur "2DFFF", le chiffre 2 désigne une opération d'index, précédée par une opération d'adaptation (en (c) sur la Fig. 5), la lettre D désigne le registre SPR et le nombre hexa- décimal FFF (notation à complément à 2) désigne "-1" qui indique la quantité de l'adaptation. reg [SPR: = reg E SPR 7 - 1 reg [SPR: = 00008000 - 1 reg [SPR: = 00007FFF reg (PCRJ: = mem -reg SPRJJ reg [PCRJ: = mem 7FFF reg [PCRJ: = 00000003 car, comme indiqué pour la troisième instruction, à l'emplacement de mémoire à adresse 7FFF, la valeur "3" est chargée. La lecture de la mémoire et le chargement de 00000003 dans le registre PCR implique que le sous- programme est terminé et que le programme ordinaire est repris et ce, avec l'instruction chargée à l'adresse 3 de la mémoire. La sixièeme instruction est donc la suivante FA742000; IMDVAL R7,#;2000 (Figure 3(II), instr. 6). Cette instruction implique: Charger dans le registre R7 le nombre de valeur 2000. La septième instruction est la suivante 00040020; ADDSTACK#$20 (Figure 3(II), instr. 7). * Le code opération "00" indique qu'il s'agit ici d'un code opération de la classe des codes opération vir- tuels (OOE{oo,...,F8}). Le dispositif décodeur du système d'ordinateur décode ce mode opération virtuel et le système exécutera donc en conséquence les opéra- tions suivantes: a) reg IPCR: = reg [ PCR b) reg CPCR: = mem reg 3 OPER + OPCODE L'application de ces opérations pour cette septième instruction donne: a) reg (IPCRJ: = reg [PCRJ reg IPCRJ: = 00000005 Le contenu du registre PCR (compte du moment du compteur de programme) est donc chargé dans le registre IPCR. Contrairement à une instruction JUMP SUBROUTINE (troisième instruction), on n'exécute donc ici aucune opération d'écriture dans la mémoire. De plus, le chargement de PCR dans IPCR prend nettement moins de temps de travail parce qu'il s'agit d'une opération de registre ordinaire. b) reg (PCR: = mem reg OPER3 + OPCODE reg [PCR]: = mem E7F00 + 003 reg CPCRJ: = mem E7F00 J reg (PCRJ: = 00001000 car, comme le montre la Fig. 2, à l'emplacement de mémoire portant l'adresse 7F00 est inscrit le mot 00001000 qui est à présent chargé dans le registre PCR. Les données de la figure mentionnée en dernier lieu suggèrent que le contenu du descripteur d'emplacement n'aurait aucune importance. Cela n'est toutefois pas le cas. Dans la suite de la description du programme, il apparaîtra que le descripteur d'emplacement est effec- tivement utilisé dans le cas d'une instruction à code opération virtuel et est par conséquent même utilisé d'une manière telle qu'il contienne déjà tant de données, davantage qu'il ne serait possible d'en trouver, par exemple lors de l'utilisation de l'instruction JUMP SUBROUTINE, ou seule une adresse de mémoire peut être enregistrée. La huitième instruction, stockée à l'emplace- ment de mémoire portant l'adresse 1000 est la suivante: FA027FFF; LOADVAL R0,-l++fR7J (Figure 3(II), instr. 8). Cette instruction contient les opérations suivantes: a) Reg 7]: = -1 + reg 7]-_7 Reg 7J: = -1 + 2000 Reg 7J: = 1FFF b) Reg 0]: = mem reg r 7]7 Reg 03: = mem 1FFF7 Reg o] = 00000000 A l'emplacement de la mémoire portant l'adresse 1FFF se trouve la valeur 00000000. Ces opérations représentent en fait une opération "POP" appliquée au registre R7, qui joue le rôle d'indicateur de pile. La neuvième instruction est la suivante: FAllCFFF; IfYOVAL Rl,-1+(IPCRJ (Figure 3(II), instr. 9). Cette instruction implique l'opération suivante: Reg L1 ' = mem E -1 + reg IPCR]7 Reg -1-]: = mer -1 + 5] Reg [ 13: = mem 4J Dans le registre R1, le contenu de l'emplacement de mémoire portant l'adresse 4 est donc chargé. Mais à cet endroit se trouve précisément la septième instruction qui comprend 00040020 a titre de code machine. Cette opération est destinée à extraire le descripteur d'emplacement de l'instruction virtuelle afin de l'utiliser dans une instruction suivante. La dixième instruction est la suivante: FA1F1000; LOADVAL Rl,Q R1 (Figure 3(II), instr. 10). Dans le descripteur d'emplacement "F1000", la lettre "F" indique qu'il s'agit ici d'une opération d'inter- prétation (en (f) sur la Fig. 5). Cette instruction implique donc: "Charger dans le registre Ri la signi- fication du descripteur d'emplacement de l'instruction qui est chargée dans le registre Ri". L'instruction 2573-228 chargée dans le registre R1 pendant le traitement de la neuvième instruction présente, à titre de descripteur d'emplacement "40020", ce qui à son tour signifie: le nombre (4) à valeur 20. Par conséquent, le mot "00000020" est à présent inscrit dans le registre R1. Ceci démontre l'importance du descripteur d'emplacement dans le cas d'une instruction avec code opération virtuel. Dans ce descripteur d'emplacement est stockée l'information qui est traitée dans la série d'instruc- tions, introduite par une instruction à code opération virtuel. La onzième instruction est la suivante FD001000; DYADIC ADD RO,R1 (Figure 3(III), instr. 11). Le code opération "FD" indique une opération DYADIC (en (c) sur la Fig. 4) entre un premier registre R0 et un deuxième registre R1. La nature de l'opération (valeur 0 bits de 16 à 19 inclus) est celle d'une opération d'addition. Cette instruction implique donc: "Addi- tionner le contenu du registre R0 et celui du registre R1 et écrire le résultat dans le registre R0 Reg 0 3: = Reg 0] + Reg [ 1 Reg rO 0: = 00000000 + 00000020 Reg [:_7 00000020". La douzième instruction est la suivante FB037001; SITOREC R0, [R7J++l (Figure 3(III), instr. 12). Cette instruction implique les opérations suivantes a) mem ( reg [ 7]7: = reg [o mem l 1FFF: = 20 Donc, le nombre 20 est inscrit à l'emplacement de mémoire portant l'adresse 1FFF. b) reg [ 7: = reg [ 7 + 1 reg 7 _7: = 1FFF + 1 reg 7 J: = 2000 Ces opérations représentent en fait une opération "PUSH", appliquée au registre R7 qui joue le rôle de pile. La treizième instruction est la suivante: FAB0C0000; LOADVAL PCR,IPCR (Figure 3(III), instr. 13). Il s'agit là de l'instruction finale au moyen de laquelle la série d'instructions introduite par une instruction à code opération virtuel est terminée. Cette instruction comprend l'opération: "Charger dans le registre PCR le contenu du registre IPCR". Etant donné que dans le registre IPCR, le compte du compteur de programme a été conservé, cela signifie donc que l'instruction suivant les instructions à code opération virtuel, à présent terminées, aura à présent son tour. L'effet total des instructions virtuelles (septième instruction ADDSTACK# 20) est que le nombre 20 est à présent additionné à la partie supérieure de la pile associée à l'indicateur de pile (registre 7). La quatorzième instruction, située à l'empla- cement de mémoire portant l'adresse 5 est la suivante: 00018100; ADDSTACK *100±ZEBODR (Figure 3(III), instr. 14). Le code opération "00" appartient à la classe de codes opération virtuels. Le système d'ordinateur exécute donc les opérations suivantes: a) reg IPCR: = reg E PCR: reg r IPCR J: = 6 b) reg [PCR: = mem Erreg EOPER_ + OPCODEJ reg [PCR: = mem E 7F00+00J reg [PCR: = 00001000 La quinzième instruction, située à l'empla- cement de mémoire portant l'adresse 1000 est la suivante: FA027FFF; LOADVAL R0,-1+±R7J (Figure 3(III), instr. 15). Cette instruction implique les opérations suivantes: a) reg [7: = -1 + reg E 7 reg 7]: = -1 + 2000 reg 7: =_ 00001FFF b) reg E0-: = mem (reg 7 _7 reg 0]: = mem 1lFFF reg 0: = 20 La présence de la valeur 20 a l'emplacement de mémoire portant l'adresse 1FFF est le résultat de l'execution de la douzième instruction. La seizième instruction est la suivante: FAllCFFF; LOADVAL Rl,-l+(IPCRJ (Figure 4(II), instr. 16). Cette instruction implique les opérations suivantes Reg 13: = mem (-1 + reg IPCR _ Reg (1]: = mem (-1 + 63 Reg 1: = mem 5] Reg Ir 1: = 00018100 Le code de l'instruction à code opération virtuel est donc & nouveau (de la même manière que pour la neuvième instruction) chargé dans le registre R1. La dix-septième instruction est la suivante: FAF1000lOOO; LDWVAL Rl, GRl (Figure 3(IV), instr. 17). Cette instruction est analogue & la dixième instruction. L'instruction qui est chargée dans le registre Ri comporte, à titre de descripteur d'empla- cement, "18100", ce qui représente l'opération: Reg f1]: = mem L $100 + reg ZEROR] Reg 1: = mere 100 + 0 - Reg (1]: = mem 100] Reg C1 À = FFFFFFE0 Dans le registre Ri, le mot FFFFFFE0 est donc chargé. Ceci fait également ressortir la manière d'utiliser, dans un système d'ordinateur conforme à l'invention, le descripteur d'emplacement pour une instruction à code opération virtuel. La dix-huitième instruction est la suivante - FD001000; DYADIC ADD RO,R1 (Figure 3(IV), instr. 18)o Cette instruction implique l'opération suivante: Reg L 0 J: = Reg o0 + Reg 1] Reg ' 0J: = 00000020 + FFFFFFE0 Reg r 0j: = 00000000 Le fait que le résultat de cette opératton soit 00000000 a pour conséquence que la valeur 00000020 est chargée dans le registre CCR. La dix-neuvième instruction est la suivante: FB037001; STORE RO, fR7_++l (Figure 3(IV), instr. 19). ce qui implique l'opération suivante: a) merm reg 7 _7 3 = Reg 03 mem IFFF: = Reg 03 mem L 1FFF J = 00000000 b) Reg _ 7: = Reg 73 + 1 Reg L 7: = 1FFF + 1 Reg /7 7: = 00002000 La vingtième instruction est la suivante: FABOC000; LOADVAL PCR, IPCR (Figure 3(IV), instr. 20). ce qui implique les opérations suivantes: Reg úPCR3: = Reg (IPCRJ Reg [PCRJ: = 00000006 Donc à nouveau l'instruction finale au moyen de laquelle une série d'instructions introduite par un code opération virtuel est terminee. La vingt-et-unième instruction est la suivante: 01018101; ORSTACK $101+ [ZEROR3 (Figure 3(V), instr. 21). I1 s'agit à nouveau d'une instruction à code opération ("01") appartenant a la classe des codes opération virtuels. Les opérations à exécuter sont donc: a) Reg (IPCRJ: = reg EPCRJ Reg EIPCRJ: = 00000007 b) Reg [PCR: = mem úreg (OPER3 + OPCODEJ Reg (PCR: = mem 7F00 + 013 Reg [PCR: = mem 7F01 j Reg (PCR] = 00001010 (voir Fig. 2) Cette instruction a à présent démontré que, dans le cas d'un code opération virtuel, le contenu de ce code opération sert aussi bien à la reconnaissance d'un code opération virtuel qu'à la détermination d'une adresse de mémoire d'une instruction initiale d'une série de mots d'instruction qui déterminent la signification de l'instruction à code opération virtuel. La vingt-deuxième instruction, située a l'emplacement de mémoire portant l'adresse 1010 est la suivante: FA027FFF; IDVAL RD0,-1++R7j (Figure 3(IV), instr. 22). Cette instruction comprend les opérations suivantes a) Reg 0: = mem E -1 + Reg 7]7 Reg f0J: = mem r -1 + 2000] Reg 0: = mem r 1FFF] Reg 0: = 00000000 (voir à cet effet l'instruc- tion 19) b) Reg 7: = -1 + Reg f7] Reg f 7 = 00001FFF La vingt-troisième instruction est la suivante: FA11CFFF; IDOVAL Rl,-l+fIPCR] (Figure 3(V), instr. 23). Cette instruction comprend l'opération suivante: Reg 1 _: = mem -1 + Reg IPCR _7 Reg 1 7: = mem -1 + 7 Reg E 1: = mem 6 3 Reg 1]: = 01018101 La vingt-quatrième instruction est la suivante: FAlF1000; LAMUL Ri,; R1 (Figure 3(V), instr. 24). Le descripteur d'emplacement de l'instruction stockée dans le registre 1 comprend "18101". Ceci implique en tant qu'opération: Reg C 1: = merm CS101 + Reg ( ZER0R3] Reg 1: = rmem101 7 Reg 1_ = F0000100 La vingtcinquième instruction est la suivante: FD061000; DYADIC OR R0,R1 (Figure 3(V), instr. 25). Dans cette instruction, le chiffre "6" désigne une opération logique "OU". Reg 0 _: = Reg E 0 7 V Reg Ef 1 Reg f0]: = F0000100 Le fait qu'à présent un nombre négatif parvienne dans Reg 0 (F, notation avec complément à 2) a pour conse- quence que la valeur 00000010 est chargée dans le registre CCR. I1 ressort de cette instruction et de la précédente qu'il est possible, au moyen de codes opération virtuels, d'exécuter une variété d'opérations. La vingt-sixième instruction est la suivante: FB037001; STORE R0, -R73++l (Figure 3(VI), instr. 26). Cette instruction implique les opérations suivantes: a) mem úReg 7 7: Reg 0] mem Reg j 1FFF / = F0000100 b) Reg 7]: = Reg f7 7 + 1 Reg 7 7 = 1FFF + 1 Reg 7]: = 2000 La vingt-septième instruction est la suivante: FAB0CO00; IDADVAL PCR IPCR (Figure 3(VI), instr. 27). ce qui implique: Reg LPCR: = Reg fIPCR Reg ú PCR_7: = 7 Le système d'ordinateur va à présent traiter les instructions situées à l'emplacement de mémoire portant l'adresse 7 et ainsi poursuivre l'exécution du programme. On n'expliquera pas plus en détail l'effet de cette instruction car cela n'a aucune importance pour la description de l'invention. Cette instruction termine alors également le programme d'ordinateur qui a été décrit pour illustrer le fonctionnement d'un système d'ordinateur conforme à l'invention. Deux aspects particuliers sont principalement apparus lors de la description de ce programme d'ordinateur. Ces aspects sont: a) le traitement d'une instruction à code opération virtuel, b) le traitement du descripteur d'emplacement-pour une opération à code opération virtuel. Le fait que, dans le cas d'un système d'ordinateur conforme à l'invention, des instructions -à code opéra- tion virtuel s'utilisent, offre un large éventail de possibilités au programmeur de système. En utilisant une instruction à code opération virtuel, on peut introduire une série d'instructions pour exécuter une opération déterminée. Cette opération peut être une addition (instruction onze) ou une multiplication ou n'importe quelle autre opération. Le programmeur de système peut ainsi, par une définition de codes opera- tion virtuels qu'il a choisie lui-même, programmer le système d'ordinateur d'une manière telle que de nou- velles "instructions" apparaissent. Etant donné le stockage efficace de PCR dans IPCR et le fait que IPCR est utilisé comme registre d'index, de telles nouvelles instructions sont exécutées d'une manière efficace. De plus, il est possible, par modification de OPER (indi- cation vers une autre table) d'offrir par programme un autre ensemble d'instructions en tenant compte du langage dans lequel le programme est écria (une machine Pascal pour du Pascal, une machine Cobol pour du Cobol) . Le descripteur d'emplacement d'une instruction a code opération virtuel contient de l'information qui est traitée dans une série d'instructions. Le traite- ment de cette information peut s'effectuer de diverses manières et est complètement déterminé par les instruc- tions de la dite série. Les instructions de cette série sont principalement des instructions pourvues d'un code opération normal. Il est cependant aussi possible d'utiliser ici des instructions à code opération virtuel. Dans ce cas, il faut cependant d'abord placer le contenu du registre IPCR sur une pile dans la mémoire. La Fig. 7 illustre un deuxième programme d'ordinateur au moyen duquel une deuxième forme d'exé- cution d'un procédé conforme a l'invention sera expliquée. Le deuxième programme ne peut être exécuté que par un système d'ordinateur qui est pourvu d'une architecture de registres telle qu'illustrée sur la Fig. 6, parce que l'exécution du second programme exige la présence d'un registre VIR (B). L'exécution du second programme offre une grande similitude avec celle du premier programme (Fig. 2) et c'est pourquoi on ne décrira que sa diffé- rence par rapport au premier programme. Etant donné que l'architecture de registres illustrée sur la Fig. 6 est différente de celle de la Fig. 1, quelques instructions doivent être utilisées à cet effet. Ainsi, par exemple, le registre SPR n'est plus désigné par D mais par E, et l'instruction située sur l'emplacement de mémoire 0 est a présent FAE47FFF, au lieu de FAD47FFF. Etant donné que ces adaptations peuvent être reconnues de manière simple, on ne la décrira pas plus en détail. La Fig. 8 illustre le résultat de l'exécution du second programme d'ordinateur illustré sur la Fig. 7. Dans cet exemple de réalisation, les registres R8 et R9 sont chargés chaque fois de la valeur "00000000". L'exécution des six premières instructions n'accuse aucune différence avec l'exécution du premier programme d'ordinateur. Pour la septième instruction, qui est l'instruction à code opération virtuel: 00060020; ADDSTACK # 20 on exécute à présent les opérations suivantes. a) reg C IPCR]: = reg PCR b) reg EPCRJ: = mem úreg fOPER7 + OPCODE J c) reg CVIRJ: = CI.R._ L'utilisation de ces opérations pour cette septième instruction donne alors: a) reg CIPCR_7: = 00000005 b) reg CPCRJ: = mem E 7F00 + 00 J reg PCRJ: = 00001000 c) reg [VIRJ: = 00060020 La différence avec l'exécution du premier programme réside à présent dans le fait que le registre VIR est chargé au moins de la partie descripteur d'emplacement du contenu du registre d'instruction. Ce registre d'instruction contenait l'instruction à code opération virtuel qui est traitée. La huitième instruction, stockée sur l'empla- cement de mémoire portant l'adresse 1000 est la suivante: FA027FFF; LOADVAL R0,-1++( 7J Cette instruction est identique à la huitième instruc- tion provenant du premier programme. La neuvième instruction, stockée sur l'empla- cement de mémoire 1001 est la suivante: FAlFB000; LOADVAL Rl, ( VIR Dans le descripteur d'emplacement "FB000", la lettre "F" indique qu'il s'agit ici d'une opération d'inter- prétation (Fig. 5(f)). Cette instruction implique donc: "Charger dans le registre Rl la signification du descripteur d'emplacement de l'instruction qui est chargée dans le registre B (VIR)". Le registre VIR contient à présent le descripteur d'emplacement 60020. L'évaluation de ce descripteur d'emplacement donne le nombre 20. Il en résulte que le mot "00000020" est à présent inscrit dans le registre R1. Le résultat de cette neuvième instruction est donc identique au résultat de la dixième instruction du premier programme comme indiqué sur la Fig. 2. La différence entre le premier et le second programme d'ordinateur et donc entre les deux architectures de registres (Fig. 1, Fig. 6) est donc le fait qu'en utilisant le registre VIR, on peut économiser uneinstruction (à savoir l'instruction LOADVAL Rl,-l+ IPCR). Le résultat de cette instruction (LOADVAL Rl,-l+[ IPCR]) est obtenu, dans le cas o on utilise la deuxième architec- ture de registres (Fig. 6), déjà lors du décodage d'une instruction a code opération virtuel (reg VIR: = L-I.R. J). L'exécution ultérieure du second programme d'ordinateur tel qu'indiqué sur la Fig. 7 est illustrée également sur la Fig. 8. Le déroulement de cette exécution peut, étant donné l'analogie avec le premier programme d'ordinateur, être considéré comme évident. 2573Z28 R E V E ND I C A T I ON S 1.- Procédé pour le traitement de mots d'instruction codés machine au moyen d'un ordinateur pourvu d'une mémoire pour le stockage des dits mots d'instruction qui comprennent chacun une partie code opération et au moins une partie descripteur d'opé- rande, les parties code opération appartenant A un ensemble fini qui est subdivisé en une première classe î0 et une seconde classe, ce procédé comprenant les pas suivants: (a) prélèvement, sous la commande de l'ordinateur, d'un premier mot d'instruction indiqué par un compte du compteur de programme; (b) décodage de la partie code opération du premier mot d'instruction et recherche de la classe a laquelle la partie code opération du premier mot d'instruction appartient; (cl) exécution des opérations données par le premier mot d'instruction pour des mots d'instruction comportant une partie code opération appartenant a la première classe; (c2) pour des mots d'instruction comportant une partie code opération appartenant à la deuxième classe, exécution des pas suivants: (c2-l) stockage du compte du moment du compteur de programme dans un registre de compteur de programme supplémentaire réservé à cet effet; (c2-2) génération, sur base de la partie code opération provenant du premier mot d'instruction; d'une adresse de mémoire a laquelle un deuxième mot d'instruction est situé, ce deuxième mot d'instruction étant l'instruction initiale d'une série de mots d'instruction qui déterminent la signification du premier mot d'instruc- tion; (c2-3) réglage du compte du moment du compteur de programme sur la dite adresse de mémoire; (c2-4) traitement de la dite série d'instruc- tions; (c2-5) réglage du compte du moment du compteur de programme sur une valeur déterminée par le compte du compteur de programme présent dans le registre de compteur de programme supplémentaire; caractérisé en ce que, pour la dite série de mots d'instruction, la partie descripteur d'opérande du premier mot d'instruction est chargée dans un premier registre d'index par au moins un troisième mot d'instruction. 2.- Procédé pour le traitement de mots d'instruction codés machine au moyen -d'un ordinateur pourvu d'une mémoire pour le stockage des dits mots d'instruction qui comprennent chacun une partie code opération et au moins une partie descripteur d'opé- rande, les parties code opération appartenant à un ensemble fini qui est subdivisé en une première classe et une seconde classe, ce procédé comprenant les pas suivants: (a) prélèvement, sous la commande de l'ordinateur, d'un premier mot d'instruction indiqué par un compte du compteur de programme; (b) décodage de la partie code opération du premier mot d'instruction et recherche de la classe à laquelle appartient la partie code opération du premier mot d'instruction; (cl) exécution des opérations données par le premier mot d'instruction pour des mots d'instruction comportant une partie code opération appartenant a la première classe; (c2) pour des mots d'instruction comportant une partie code opération appartenant à la deuxième classe, exécution des pas suivants: (c2-1) stockage du compte du moment du compteur de programme dans un registre de compteur de programme supplémentaire réservé à cet effet; (c2-2) génération, sur base de la partie code opération du premier mot d'instruction, d'une adresse de mémoire à laquelle un deuxième mot d'instruction est situé, ce deuxième mot d'instruction étant l'instruction initiale d'une série de mots d'instruction qui déterminent la signification du premier mot d'instruc- tion; (c2-3) réglage du compte du moment du compteur de programme sur la dite adresse de mémoire; (c2-4) traitement de la dite série d'instruc- tions; (c2-5) réglage du compte du moment du compteur de programme sur une valeur déterminée par le compte de compteur de programme présent dans le registre de compteur de programme supplémentaire; caractérisé en ce que pour des mots d'instruction comportant une partie code opération appartenant à la deuxième classe, au moins la partie descripteur d'opé- rande du premier mot d'instruction est chargée dans un deuxième registre d'index réservé à cet effet avant le réglage du compte du compteur de programme sur l'adresse de mémoire. 3.- Procédé suivant la revendication 1, caractérisé en ce que, lors de l'exécution du troisième mot d'instruction, le contenu du registre de compteur de programme supplémentaire est utilisé pour localiser dans la mémoire de la partie descripteur d'opérande du premier mot d'instruction. 4.- Procédé suivant la revendication 1, 2 ou 3, caractérisé en ce que, pour la dite série de mots d'instruction, la partie descripteur d'opérande du premier mot d'instruction est traitée par au moins un quatrième mot d'instruction. 5.- Procédé suivant l'une quelconque des revendications précédentes, caractérisé en ce que la génération de l'adresse de mémoire pour le deuxième mot d'instruction comprend les sous-pas suivants: (1) formation d'une adresse de table à partir d'une table de mémoire par addition à la partie code opération du premier mot d'instruction, d'une valeur stockée préalablement dans un registre d'extension d'opération réservé à cet effet; (2) adressage d'un mot de mémoire situé à l'adresse de table formée; (3) prélèvementdu mot de mémoire à la dite adresse de table, ce mot de mémoire formant l'adresse de mémoire. 6.- Ordinateur pourvu d'une mémoire pour le stockage de mots d'instruction codés machine qui comprennent chacun une partie code opération et au moins une partie descripteur d'opérande, les parties code opération appartenant à un ensemble fini qui est subdivise en une première et une deuxième classe, l'ordinateur comprenant, en outre, un registre de compteur de programme, un générateur d'adresse et un décodeur de code opération, ce décodeur de code opéra- tion étant pourvu de premiers moyens pour reconnaître séparément des parties code opération de la première et de la seconde classe et de seconds moyens pour produire un signal de commande sous le contrôle d'un mot de code opération de la seconde classe reconnu, l'ordinateur comprenant, en outre, un registre de compteur de programme supplémentaire et des moyens de transfert, ces moyens de transfert comportant une première entrée de commande pour la réception du signal de commande et étant prévus, en outre, pour transférer, sous la commande d'un signal de commande reçu, le contenu du registre de compteur de programme vers le registre de compteur de programme supplémentaire, et le générateur d'adresse étant prévu pour générer, sous le contrôle du signal de commande, une adresse de mémoire à laquelle est situé un mot d'instruction initial d'une série de mots d'instruction pour le traitement d'une partie descripteur, caractérisé en ce que l'ordinateur est pourvu d'un registre d'extension d'opération qui comporte une deuxième entrée de commande pour la réception du signal de commande et une sortie qui est connectée au générateur d'adresse. 7.- Ordinateur suivant la revendication 6, caractérisé en ce qu'il est pourvu, en outre, d'un second registre d'index qui comprend une troisième entrée de commande pour la réception du signal de commande et une entrée de données connectée à la mémoire pour la réception de la partie descripteur d'opérande d'un mot d'instruction sous le contrôle du signal de commande.