FR 2789193 A1 20000804 FR 9901004 A 19990129 Procédé pour modifier le comportement d'une machine informatique. Le domaine d'application auquel s'intéresse l'invention est celui des modifications de comportement d'une machine informatique en cours d'exécution, c'est à dire sans qu'il ne soit besoin d'arrêter et de redémarrer la machine avec une nouvelle configuration. Il est intéressant de pouvoir modifier le comportement d'une machine informatique en fonctionnement pour assurer la maintenance de systèmes io qu'on ne peut se permettre d'arrêter. En phase de débogage, on peut vouloir corriger des erreurs de code exécutable. On peut vouloir obtenir une trace de certains événements particuliers survenant pendant le fonctionnement de la machine. D'autres besoins de modification du comportement de la machine existent, par exemple pour en faire évoluer les performances. Le comportement de la machine résulte de l'exécution de certaines fonctions qui concernent le coeur de la machine, ce sont par exemple les fonctions de pilotages des éléments matériels et les fonctions du système d'exploitation. Pour faire une modification dans une telle fonction, la solution la plus simple consiste à redémarrer la machine en chargeant un nouveau code executable de cette fonction. Le code exécutable d'une fonction est du code binaire directement interprétable par le ou les processeurs de la machine. Il est souvent obtenu par compilation d'un code source élaboré en langage évolué, plus proche de la compréhension humaine. Pour ne pas avoir à recompiler le code d'une fonction et à redémarrer la machine, on peut prévoir que la fonction soit paramétrable. Certains paramètres de la fonction sont modifiables par un programme ou par une interface opérateur de façon à ce que la fonction influe sur le comportement de la machine, de manière différente suivant la valeur des paramètres. 2 2789193 Cependant, ceci nécessite de connaître à l'avance, les modifications de comportement souhaités de la machine. Cette solution n'apporte pas une souplesse satisfaisante pour des modifications non prévues telles que les corrections d'erreur logicielles ou matérielles, les évolutions de performances. Pour palier les inconvénients précédemment cités, l'objet de l'invention est un procédé pour modifier le comportement d'une machine informatique en cours d'exécution de fonctions en code binaire contenu dans une première zone mémoire de ladite machine, par au moins un processeur de ladite machine. Le io procédé est caractérisé en ce qu'il comprend: - une première étape consistant à ranger dans une deuxième zone mémoire de ladite machine, une première séquence spécifique de code binaire débutant à une première adresse déterminée de ladite première zone mémoire. Cette première séquence spécifique de code binaire est celle dont l'exécution modifiera le comportement de la machine; - une deuxième étape consistant à parcourir le code binaire contenu dans la première zone mémoire jusqu'à trouver toutes les adresses auxquelles apparaît une première instruction de branchement sur une première fonction déterminée et à sauvegarder les adresses ainsi trouvées dans une structure de données située à une deuxième adresse déterminée. Cette première fonction est celle dont l'exécution du code binaire correspond au comportement d'origine de la machine; - une troisième étape succédant aux deux étapes précédentes, consistant à écrire à chaque adresse sauvegardée dans la structure de données, une deuxième instruction de branchement sur ladite première adresse déterminée. Ceci permet d'insérer dans le code binaire, sans autre altération de sa structure, une séquence de code binaire dont l'exécution modifie le comportement de la machine. En effet, le comportement de la machine ne résulte plus alors de l'exécution de la première fonction telle qu'activée dans le code binaire précédemment exécuté. 3 2789193 Une instruction de branchement est codée en binaire sur un nombre fini de bits qui constituent un mot. Pour éviter de faire un travail comparable à celui d'un compilateur, un intérêt de l'invention est de n'avoir à remplacer dans I'enchaînement du code binaire initial, que le seul mot de la première instruction de branchement précédemment citée. Il convient alors que le mot de la deuxième instruction de branchement précédemment citée puisse contenir l'indication du type d'instruction à réaliser par le processeur et l'adresse sur laquelle effectuer le branchement. Cette adresse est donc nécessairement io codée sur un nombre restreint de bits. Ceci impose que la séquence spécifique de code binaire soit dans une deuxième zone mémoire - dont l'adresse puisse être codée sur un nombre restreint de bits. Lorsque, pour modifier le comportement de la machine, il est impossible de i5 contrôler la localisation du code binaire ajouté du point de vue de son adresse, il convient d'utiliser un deuxième type de branchement plus puissant, consistant à remplir un registre de comptage avec l'adresse voulue, puis à se brancher à l'adresse contenue dans ce registre. Une amélioration du procédé selon l'invention, est alors caractérisée en ce que le procédé comprend: - Une première étape consistant à ranger dans une deuxième zone mémoire de la machine, une première séquence spécifique de code binaire débutant à une première adresse déterminée de la première zone mémoire. Cette première séquence spécifique de code binaire est celle qui permet de réaliser un branchement sur une fonction d'adresse quelconque, par utilisation du registre de comptage. Ce type de branchement est plus élaboré que le simple remplacement d'un mot dans le code binaire initial; - une deuxième étape consistant à parcourir le code binaire contenu dans la première zone mémoire jusqu'à trouver toutes les adresses auxquelles apparaît une première instruction de branchement sur une première fonction déterminée et à sauvegarder les adresses ainsi trouvées dans une structure de données située à une deuxième adresse déterminée. Cette première fonction 4 2789193 est celle dont l'exécution du code binaire correspond au comportement d'origine de la machine. - une troisième étape consistant à remplacer la première instruction de branchement par une deuxième instruction de branchement sur la première adresse déterminée, en écrivant à l'adresse o se trouve la première instruction de branchement, ladite deuxième instruction de branchement. - une quatrième étape précédant la troisième étape, consistant à ranger dans une troisième zone mémoire de ladite machine, une deuxième séquence de îo code binaire réalisant une deuxième fonction déterminée, à une troisième adresse déterminée, et en ce que ladite première séquence spécifique de code binaire contient au moins une instruction de branchement sur ladite troisième adresse déterminée. Ladite deuxième fonction déterminée est celle dont l'exécution du code binaire modifiera le comportement d'origine de la machine. Selon une caractéristique supplémentaire du procédé, objet de l'invention, la première séquence spécifique de code binaire contient: - une ou plusieurs instructions pour sauvegarder le contenu d'un registre de lien et d'un registre de comptage du processeur sur lequel la première séquence spécifique s'exécute, à une quatrième adresse déterminée de la deuxième zone mémoire; - une instruction pour charger la troisième adresse déterminée dans le registre de comptage; - une instruction de branchement utilisant le registre de comptage; - une ou plusieurs instructions pour charger dans le registre de lien et dans le registre de comptage le contenu sauvegardé au moyen de la quatrième adresse déterminée; - une instruction de retour basée sur le contenu du registre de lien. 2789193 D'autres avantages et détails de réalisation de l'invention vont ressortir de la description d'une mise en oeuvre particulière en référence aux figures. - La figure 1 représente un exemple de machine comprenant au moins un processeur. - La figure 2 représente un état de code binaire avant mise en oeuvre du procédé selon l'invention. - La figure 3 représente des étapes du procédé selon l'invention. - La figure 4 représente un état de code binaire après mise en oeuvre du io procédé selon l'invention. En référence à la figure 1, une machine informatique comprend au moins un processeur 1, 2, 3, 4, relié à une unité de mémoire 5 au moyen d'un bus système 6. Chaque processeur 1, 2, 3, 4 est une unité centrale de type connu (CPU pour Central Processing Unit en langue anglaise). Un processeur CPU comprend plusieurs registres qui lui permettent de traiter le contenu de l'unité de mémoire 5. Sans entrer dans le détail de fonctionnement, complexe, du processeur CPU, on retient sur la figure 1, des registres IAR, LR, CTR. Le registre IAR (Instruction Address Register en langue anglaise), est destiné à contenir une adresse d'instruction résidente dans l'unité de mémoire 5, en cours d'exécution par le processeur CPU. Des fonctions exécutables par la machine informatique, sont constituées de suites d'instructions en code binaire, résidentes chacune à une adresse dans l'unité de mémoire 5. La lecture d'une instruction en code binaire au moyen du registre IAR permet son interprétation directe par le processeur qui la traite. Une instruction est codée par un ensemble de bits qui constitue un mot. Le mot comprend entre autres, un champ pour coder le type d'instruction et un ou plusieurs champs pour accéder à une ou plusieurs opérandes de l'instruction. Quelques exemples de type d'instruction sont charger, ranger, additionner, brancher, etc. Suivant le type d'instruction, un champ pour accéder à une opérande contient la valeur de 6 2789193 l'opérande, I'adresse absolue ou l'adresse relative de l'opérande en mémoire, le numéro d'un registre contenant la valeur de l'opérande ou contenant l'adresse de l'opérande en mémoire. Le registre LR (Link Register en langue anglaise), est utilisable par certaines instructions de branchement pour établir un lien au retour de branchement effectué par l'instruction utilisant le registre LR. Le registre CTR (CounT Register en langue anglaise), est utilisable par certaines instructions de branchement pour contenir une adresse de branchement en mémoire. L'utilisation des registres IAR, LR et CTR sera mieux comprise en référence à l'exemple de la figure 2. Une première zone mémoire 7 de l'unité de mémoire 5 contient du code binaire de fonctions exécutable par la machine. Ce code binaire contient par exemple une suite d'instructions quelconques Instr.10, Instr.11, Instr.12 situées à des adresses successives de la zone mémoire 7. Lorsque le registre IAR, par exemple du processeur 1, contient l'adresse de l'instruction Instr.10, le processeur exécute cette instruction. Ensuite, le registre IAR est matériellement incrémenté par le processeur 1 pour contenir l'adresse de l'instruction Instr. 11 qu'il exécute et ainsi de suite pour l'instruction suivante Instr. 12. Dans l'exemple de la figure 2, à une adresse A2 suivant l'adresse de I'instruction Instr.12, se trouve une instruction particulière blAim, puis aux adresses suivantes, d'autres instructions quelconques Instr.14, Instr.15, etc. Le mot binaire qui code l'instruction blAim contient comme type, celui d'un branchement bl, et comme valeur d'opérande, une adresse relative Aim (pour adresse immédiate). Lorsque le registre IAR, par exemple du processeur 1, contient l'adresse A2 comme adresse courante, le décodage du type bl par le processeur 1, provoque essentiellement deux actions des circuits matériels du 7 2789193 processeur 1. Une première action consiste à ajouter la valeur d'opérande Aim à l'adresse courante A2 pour obtenir une adresse absolue qui est rangée dans le registre IAR. Une deuxième action consiste à ranger dans le registre LR, l'adresse suivante de l'adresse A2 o se trouve l'instruction Instr.14. La première action a pour effet de rompre la séquentialité d'exécution des instructions à des adresses successives de la zone mémoire 7. En effet, l'instruction qui est exécutée à la suite de celle située à l'adresse A2 n'est pas l'instruction Instr.14 mais une instruction Instr. 20 située à l'adresse A3. Aux io adresses suivantes de l'adresse A3, des instructions Instr.21, Instr.22, Instr.23, Instr.24 constituent avec l'instruction Instr.20 le code binaire d'une première fonction exécutable par la machine. La deuxième action a pour effet de rétablir la séquentialité d'exécution des instructions Instr.14, Instr.15 au retour de la fonction codée par les instructions Instr.20 à Instr.24. Pour cela, la dernière instruction Instr.24 de la première fonction est suivie d'une instruction blr. Le décodage de l'instruction blr par le processeur provoque le transfert du contenu du registre LR vers le registre IAR. Les instructions Instr.10 à Instr.15 font partie du code binaire d'une autre fonction qui fait appel à la première fonction. Généralement la première fonction et l'autre fonction sont d'abord écrites dans un langage évolué plus compréhensible par un être humain que du code binaire. L'écriture de fonctions en langage évolué dans un programme constitue ce qu'on nomme habituellement un code source. Un compilateur se charge alors de traduire le code source en code binaire. En utilisant de préférence l'adressage relatif, le compilateur génère un code binaire de fonctions dont l'emplacement en mémoire est optimisé. L'adressage relatif qui permet de coder dans un seul mot le type d'instruction et l'adresse de branchement de l'exécution, est bien 8 2789193 adapté pour des fonctions dont les adresses des séries d'instructions branchées sont proches en mémoire des instructions de branchement. La zone mémoire 7 étant réservée pour l'exécution du système d'exploitation, les suites d'instructions qui y résident sont celles de fonctions qui gouvernent le comportement de la machine. La zone mémoire 7 fait partie d'un espace d'adressage Noyau (Kernel en langue anglaise) de l'unité mémoire 5, non directement accessible par les applications traitées par la machine. Un procédé pour modifier le comportement de la machine est décrit en référence à la figure o 3 et à la figure 4. En référence à la figure 4, on distingue dans l'espace d'adressage Noyau: - la première zone mémoire 7 qui contient du code et des données chargés lors de l'amorçage du système d'exploitation (boot en anglais) au démarrage de la machine; - une deuxième zone mémoire 8, proche en termes d'adresses de la zone mémoire 7, pour contenir du code et des données chargés pendant ou après l'amorçage du système d'exploitation; - une troisième zone mémoire 9 pour contenir du code et des données accessibles à certaines applications. La zone mémoire 9 constitue un espace d'adressage partagé, généralement plus éloigné en termes d'adresses de la zone mémoire 7 que la zone de mémoire 8. En référence à la figure 3, la notion de première, deuxième ou quatrième étape ne traduit pas un ordre de séquentialité mais simplement un ordre de description ou d'intérêt. La représentation des étapes El, E2, E4 sur des branches parallèles, indique que l'ordre d'enchaînement de ces étapes est sans importance. Lorsqu'un ordre d'enchaînement d'étapes El, E3, est important, celui-ci est précisé. 9 2789193 En référence aux figures 3 et 4, dans une première étape El, plusieurs adresses A1, A5, A6, A7, sont réservées dans la zone mémoire 8. Une séquence spécifique d'instructions Instr.30,..., Instr.36, bir est écrite en code binaire, à des adresses successives de la zone mémoire 8, dont l'adresse de début est l'adresse A1 o est écrite l'instruction Instr.30. Dans une deuxième étape E2, une première fonction est déterminée comme étant celle dont des appels sont déroutés de façon à modifier le comportement de la machine en comparaison de celui initialement prévu lorsque cette io première fonction est normalement appelée. L'adresse A3 à laquelle réside la première instruction Instr.20 du code binaire de la première fonction est mémorisée. Un système d'exploitation comprend généralement une table non représentée ici, qui répertorie les fonctions en indiquant pour chacune, l'adresse de résidence de sa première instruction. Cette table est par exemple utilisée par un compilateur pour transcrire en code binaire un code source qui fait appel à des fonctions qui y sont répertoriées. Une lecture de cette table permet d'obtenir l'adresse A3 lorsque la fonction est déterminée par son nom. Le code binaire contenu dans la zone mémoire 7 est parcouru de sorte que chaque fois qu'est détectée une instruction de branchement sur la première fonction, la valeur de l'adresse A2 à laquelle est détectée cette instruction de branchement, est sauvegardée dans une structure de données résidant à une adresse déterminée A8. Pour détecter l'instruction de branchement sur la première fonction, chaque foi qu'est reconnue une instruction bl_Aim de branchement sur une adresse relative Aim, la valeur d'adresse relative Aim est ajoutée à la valeur d'adresse courante pour laquelle l'instruction bl_Aim a été reconnue. Si le résultat est égal à la valeur d'adresse A3, ceci indique un branchement sur la première fonction. L'adresse courante constitue alors une adresse de type A2. A chaque foi qu'est détectée une instruction blAim de branchement sur la première fonction, en mémorisant l'instruction bl Aim à côté de la valeur d'adresse A2 dans la structure de données résidant à l'adresse A8, il est possible de rendre le procédé réversible. 1o 2789193 Une troisième étape E3 succède aux étapes E1 et E2. Dans l'étape E3, une instruction blaA1 est écrite à chaque adresse A2 dont la valeur est mémorisée dans la structure de données résidant à l'adresse A8. Chaque première instruction détectée bl_Aim de branchement sur la première fonction, est ainsi remplacée par la deuxième instruction bla_A1. Dans l'exemple présenté o la deuxième instruction est une instruction de branchement absolu sur l'adresse A1, il n'est pas nécessaire de faire de calcul lié à la localisation de l'adresse A2 o le remplacement est effectué. Ceci permet d'accélérer les opérations de io remplacement de chaque première instruction par la deuxième instruction. Lorsque les processeurs 1, 2, 3, 4, sont équipés d'antémémoires, une étape E5 peut suivre l'étape E3. Dans l'étape E5, les lignes modifiées d'antémémoire sont purgées de façon à assurer que les modifications soient prises en compte par les processeurs. La séquence spécifique rangée dans la zone mémoire 8 par l'étape El, débute par une opération de sauvegarde de contenus de registres du processeur CPU, et termine par une opération de restitution dans ces registres, des contenus sauvegardés. Ladite opération de restitution termine elle-même par une instruction de type blr. L'opération de sauvegarde comprend des instructions Instr.30, Instr.31. L'instruction Instr.30 déclenche une écriture du contenu du registre LR à I'adresse A5. L'instruction Instr.31 déclenche une écriture du contenu du registre CTR à l'adresse A6. L'opération de restitution comprend des instructions Instr.35, Instr.36. L'instruction Instr.35 déclenche une écriture de la valeur contenue à l'adresse A5 dans le registre LR. L'instruction Instr.36 déclenche une écriture de la valeur contenue à l'adresse A6 dans le registre CTR. il 2789193 Entre l'opération de sauvegarde et l'opération de restitution, une suite d'instructions Instr.33,... constitue une séquence d'instructions prévue pour modifier le comportement de la machine en se substituant à la séquence d'instructions Instr.20,..., Instr.24. Il est intéressant de noter que la séquence spécifique d'instructions débutant à l'adresse A1, est indépendante a priori de l'adresse A3, c'est à dire du choix de la première fonction. Pour un utilisateur ne disposant pas de droits d'accès direct aux zones mémoires 7 et 8, il est possible de mettre en oeuvre le io procédé de modification de comportement lorsque la machine comprend une séquence du type de la séquence spécifique de code binaire précédemment décrite et une interface utilisateur 13. L'interface utilisateur 13 comprend une entrée 14 prévue pour recevoir un nom de fonction et une entrée 16 prévue pour recevoir un ordre d'activation/désactivation. Pour permettre un choix entre plusieurs séquences spécifiques, I'interface peut comprendre de plus une entrée 15 prévue pour recevoir un nom de séquence spécifique. Le nom de fonction à dérouter, reçu en entrée 14, sert à exécuter l'étape E2. Le nom de séquence spécifique, reçu en entrée 15, sert à exécuter l'étape El. Lorsqu'elle reçoit en entrées 14, 16, un nom de fonction et un ordre d'activation, l'interface déclenche les étapes El, E2 du procédé de modification de comportement. L'interface 13 dispose de moyens de contrôle qui, par exemple valident l'entrée 16 à condition qu'un nom soit présenté en entrée 14, ou par exemple utilise un nom de séquence spécifique par défaut si aucun nom n'est présenté en entrée 15. Une étape E6 peut succéder à l'étape E3 ou E5, lorsque c'est souhaité. L'étape E6 effectue l'opération inverse de l'étape E3. La structure de donnée résidant à l'adresse A8 est parcourue. Pour chaque valeur d'adresse A2 lue, I'instruction bl_Aim mémorisée à coté de cette valeur d'adresse A2, est écrite à l'adresse A2 de la zone mémoire 7. Ceci permet de rendre le procédé de modification de 12 2789193 comportement réversible. En effet, la réécriture de toutes les instructions de branchement bl_Aim originelles sur la première fonction, redonne à la machine son comportement initial. Il est possible de déclencher l'étape E6 après l'étape E3 ou l'étape E5 au moyen de l'interface opérateur 13, en présentant en entrée 16, un ordre de désactivation. Lorsque les processeurs 1, 2, 3, 4, sont équipés d'antémémoires, une étape E7 o peut suivre l'étape E6. Dans l'étape E7, les lignes modifiées d'antémémoire sont purgées de façon à assurer que les modifications soient prises en compte par les processeurs. Une étape E4 améliore le procédé de la façon suivante. L'étape E4 est activée avant l'étape E3. En étape E4, une séquence d'instructions Instr.40,..., Instr.46, blr, est copiée à des adresses successives d'une zone mémoire 9, en débutant à une adresse A4. Lorsque l'étape E4 est activée, la séquence spécifique d'instructions chargée en zone mémoire 8 par l'étape E1 est une séquence spécifique particulière comprenant la sauvegarde des contenus des registres LR et CTR, le chargement de l'adresse A4 dans le registre de comptage du processeur, I'instruction bctrl_A4 de branchement à l'adresse contenue dans le registre de comptage, puis la restitution, dans les registres LR et CTR, des contenus sauvegardés. La séquence d'instructions Instr.40, ....DTD: Instr.46, blr, constitue le code binaire d'une fonction de substitution, c'est à dire d'une deuxième fonction que l'on souhaite exécuter à la place de la première fonction. Ceci n'empêche pas la deuxième fonction d'appeler la première fonction si l'exécution de la première fonction est nécessaire. La copie en zone 9, du code binaire de la deuxième fonction présente plusieurs avantages. Le code binaire de la deuxième fonction peut résider dans des pages 11, 12, quelconques de la mémoire 5. C'est à partir de ces pages que 13 2789193 s'effectue la copie. Ainsi, par exemple, les pages 11, 12, peuvent être à des adresses éloignées des zones mémoire 7 à 9. Par exemple encore, il est possible d'écrire la deuxième fonction dans un langage évolué pour constituer un code source. On évite une programmation fastidieuse de code binaire ou de code assembleur. Ensuite, il est possible de compiler le code source de la deuxième fonction pour obtenir le code binaire de la deuxième fonction, au moyen d'un compilateur. Le compilateur range le code binaire dans le lieu de mémoire qui lui convient. Il se peut que le code binaire généré par le compilateur chevauche deux pages 11 et 12. Si on le souhaite, il est possible de programmer la deuxième fonction en langage évolué, de façon à faire appel à la première fonction. Le compilateur se charge de générer des instructions Instr.42,..., Instr.44 pour coder en binaire cet appel. Le compilateur se charge par exemple de générer une l5 instruction bctrlA3 sur l'adresse A3 de la première fonction tel qu'on le voit en figure 4. Ceci est avantageux lorsque la première fonction reste nécessaire au fonctionnement de la machine. Si les séquences d'instructions résidant en zone mémoire 7 sont exécutées en mode d'adressage virtuel, le déroutement de la première fonction bénéficie de ce mode d'adressage. Cependant, il est possible que les séquences d'instructions résidant en zone mémoire 7 soient exécutées en mode d'adressage physique. De préférence, l'adresse A4 est une adresse de début de page physique 10 résidant en zone mémoire 9. En s'assurant que le code binaire de la deuxième fonction tient sur une page physique, la recopie en zone mémoire 9 fait tenir le code binaire de la deuxième fonction sur la seule page 10. Les problèmes de connexité de pages qui peuvent se poser en mode d'adressage physique sont résolus car la successivité des adresses en absence de branchement est conservée. Si le code binaire ne tient pas sur une seule page physique, il convient d'effectuer la copie sur des pages physiques qui se succèdent. 14 2789193 Il est possible d'activer l'étape E4 au moyen de l'interface 13 en présentant sur une entrée 17 de l'interface 13, un nom de fonction de substitution dont le code réside dans la mémoire 5 de la machine. L'interface 13 comprend des moyens pour vérifier que le nom présenté sur l'entrée 14 est celui de la séquence spécifique particulière. Dans le cas o l'étape E4 est activée, I'étape E1 charge dans la zone mémoire 8, la séquence spécifique particulière qui contient une instruction bctrlA4 pour io effectuer un branchement sur l'adresse A4. L'instruction bctrl a pour effet de charger dans le registre IAR d'un processeur qui l'exécute, le contenu du registre CTR de ce processeur et dans le registre LR de ce processeur, la valeur de l'adresse qui suit celle à laquelle réside l'instruction bctrl. L'utilisation de l'instruction bctrl présente un intérêt qui est celui de pouvoir se brancher à une adresse quelconque dont la valeur est contenue dans le registre CTRL. L'instruction bctrl de la séquence spécifique d'instructions est alors précédée d'une instruction Instr.33 dont l'effet est de ranger dans le registre CTRL, la valeur d'adresse A4. Après mise en oeuvre du procédé, la machine fonctionne tel qu'expliqué en référence à la figure 4. Supposons par exemple que le processeur 2 exécute les instructions Instr.10 à Instr.15 résidentes dans la zone mémoire 7. Lorsque le registre IAR du processeur 2 contient l'adresse A2, le processeur 2 décode l'instruction bla_A1. En décodant l'instruction bla _A1, le processeur 2 range dans son registre LR, I'adresse suivant l'adresse A2 et range dans son registre IAR l'adresse A1 en valeur absolue. Aux cycles suivants, le processeur 2 décode alors la séried'instructions de sauvegarde Instr.30, Instr.31 qui débute à l'adresse A1 dans la zone mémoire 8. En décodant la série d'instructions Instr.30, Instr.31, le processeur 2 écrit la valeur contenue dans son registre LR et la valeur contenue dans son registre CTR, aux adresses A5, A6. Ensuite, le processeur 2 décode la série d'instructions d'insertion qui commence à 2789193 l'instruction Instr.32. Ensuite, le processeur 2 décode la série d'instructions de restitution Instr.35, Instr.36 qui range les valeurs écrites aux adresses A5, A6, dans les registres LR et CTR. Ainsi, les registres LR et CTR du processeur 2, contiennent à nouveau les valeurs qu'ils contenaient immédiatement après que le registre IAR contienne l'adresse A2. En particulier, le registre LR contient l'adresse de l'instruction Instr.14 qui suit l'adresse blaA1 dans la zone mémoire 7. A la suite de la dernière instruction Instr.36 de la série d'instructions de restitution, le processeur 2 décode l'instruction blr. En décodant l'instruction blr, le processeur 2 range dans son registre IAR, le io contenu de son registre LR. Ainsi, aux cycles suivants, le processeur 2 exécute les instructions Instr.14, lnstr.15 résidant dans la zone mémoire 7. La sauvegarde avant, puis la restitution après exécution de la série d'instructions d'insertion permet à la série d'instructions d'insertion de modifier le contenu des registres LR et CTR si besoin est, et permet de revenir à toute instruction Instr.14 qui suit toute instruction blaA1 car le code des instructions Instr.30 à Instr.36 est indépendant de l'adresse A2. La série d'instructions d'insertion mentionnée ci-dessus, peut contenir des instructions simples que l'on désire insérer entre les instructions Instr.12 et Instr.14 dans la zone mémoire 7. Selon la mise en oeuvre de l'invention présentée en figure 4, lorsque le processeur 2 décode la série d'instructions Instr.32, Instr.33, le processeur 2 charge la valeur résidant à l'adresse A7 et la range dans son registre CTR. Comme la valeur résidant à l'adresse A7 est l'adresse A4 de l'instruction Instr.40, le registre CTR contient alors l'adresse A4. Ensuite, le processeur 2 exécute l'instruction bctrl qui précède l'instruction Instr. 35. En exécutant l'instruction bctrl, le processeur 2 range dans son registre LR, I'adresse o réside l'instruction Instr.35 et range dans son registre IAR, le contenu du registre CTR, c'est à dire l'adresse A4. Lorsque le registre IAR du processeur 2, contient l'adresse A4, le processeur 2 décode l'instruction Instr.40 résidant dans la zone mémoire 9, puis, par 16 2789193 incrémentations successives du registre IAR, la suite des instructions Instr.41 à Instr.46 jusqu'à arriver à l'instruction bir qui suit l'instruction Instr.46. En décodant l'instruction bir, le processeur 2 range le contenu de son registre LR dans son registre IAR, c'est à dire l'adresse de l'instruction Instr.35. Le processeur 2 enchaîne ainsi les instructions suivantes Instr.35, Instr.36 résidant dans la zone mémoire 8 puis les instructions Instr.14, Instr.15 résidant dans la zone mémoire 7. Les explications qui précèdent pour le processeur 2 restent valables pour tout io processeur 1, 3, 4 de la machine. Il est intéressant de noter que le remplacement de la première instruction bl_Aim par la deuxième instruction bla_A1 ne crée pas de perturbation dans le fonctionnement de la machine, même si un processeur exécute l'une des instructions Instr.12 à Instr.14 pendant le remplacement. En effet: - si le processeur exécute l'instruction Instr.14, le comportement de la machine provoqué précédemment par le branchement en adresse A2 sur la première fonction n'a simplement pas été modifié par le remplacement, il le sera au branchement suivant; - si le processeur exécute l'instruction Instr.12, le processeur exécute ensuite l'instruction résidant à l'adresse A2 qui est l'instruction blaA1 pour exécuter ultérieurement l'instruction Instr.14 car son registre LR contient l'adresse suivante de l'adresse A2 au moment du branchement qui modifie alors le comportement de la machine; - si le processeur exécute l'instruction résidant à l'adresse A2, quelque soit le type de branchement, le registre LR contient l'adresse de l'instruction Instr.14. Si le branchement est effectif sur l'adresse A3, la séquence d'instructions débutant à l'adresse A1 n'est pas exécutée et le retour sur l'instruction Instr.14 est assuré par exécution de l'instruction blr qui suit l'instruction Instr.24. Si le branchement est effectif sur l'adresse A1, la séquence d'instructions débutant à I'adresse A1 est exécutée et le retour sur l'instruction Instr.14 est assuré par exécution de l'instruction blr qui suit l'instruction Instr.36. 17 2789193 On remarque dans la séquence d'instructions Instr.40,..., Instr.46, bir, résidant dans la zone mémoire 9 que: - en absence d'instruction bctrl_A3, la séquence d'instructions Instr.40, ....DTD: Instr.46, bir, se substitue purement et simplement à la séquence d'instructions Instr.20,..., Instr.24, blr; - en présence d'une instruction bctrl_A3 en fin de séquence d'instructions Instr.40,..., Instr.46, un enchaînement de la séquence d'instructions Instr.40, Instr. 46, s'insère avant l'enchaînement des instructions Instr.20,..., Instr. 24, bir; - en présence d'une instruction bctrl_A3 en début de séquence d'instructions Instr.40,..., Instr.46, un enchaînement de la séquence d'instructions Instr.40, lnstr.46, s'insère après l'enchaînement des instructions Instr.20,..., lnstr.24, bir; - en présence d'une instruction bctrl_A3 parmi les instructions Instr.40, ....DTD: Instr.46, un enchaînement de la séquence d'instructions Instr.40,..., Instr.46, s'insère avant et après l'enchaînement des instructions Instr.20,..., Instr.24, bir. Ainsi, le procédé selon l'invention permet d'insérer l'enchaînement d'un nombre quelconque d'instructions Instr.40,..., Instr.46, avant et ou après, ou à la place de l'enchaînement d'une séquence quelconque d'instructions Instr.20,.... Instr.24, sans avoir à modifier les adresses des instructions qui résident dans la zone mémoire 7. De plus, I'enchainement des instructions Instr.40,.... Instr.46, peut résulter d'une fonction élaborée par des moyens logiciels standards sans avoir à se préoccuper du fait que les instructions résidant en mémoire 7 soient exécutées en mode d'adressage virtuel ou physique. 18 2789193 REVENDICATIONS 1. Procédé pour modifier le comportement d'une machine informatique en cours d'exécution de fonctions en code binaire contenu dans une première zone mémoire (7) de ladite machine, par au moins un processeur (1, 2) de ladite machine, caractérisé en ce qu'il comprend: - une première étape (El) consistant à ranger dans une deuxième zone mémoire (8) de ladite machine, une première séquence spécifique de code binaire (Instr. 30,..., Instr.36, bir) débutant à une première adresse déterminée io (A1) de ladite deuxième zone mémoire (8); - une deuxième étape (E2) consistant à parcourir le code binaire contenu dans la première zone mémoire (7) pour trouver des adresses (A2) auxquelles apparaît une première instruction de branchement (blAim) sur une première fonction déterminée et à sauvegarder les adresses (A2) ainsi trouvées dans une structure de données située à une deuxième adresse déterminée (A8); - une troisième étape (E3) succédant aux deux étapes précédentes (El) et (E2), consistant à remplacer la première instruction de branchement (blAim) par une deuxième instruction de branchement (bla A1) sur ladite première adresse déterminée (A1), en écrivant aux adresses (A2) ladite deuxième instruction de branchement. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend: une quatrième étape (E4) précédant la troisième étape (E3), consistant à ranger dans une troisième zone mémoire (9) de ladite machine, une deuxième séquence de code binaire (Instr.40,..., Instr.46, blr) réalisant une deuxième fonction déterminée, à une troisième adresse déterminée (A4); et en ce que la première séquence spécifique de code binaire contient au moins une instruction de branchement (bctrlA4) sur ladite deuxième fonction déterminée. 19 2789193 3. Procédé selon la revendication 2, caractérisé en ce que la première séquence spécifique de code binaire contient: - une ou plusieurs instructions pour sauvegarder le contenu d'un registre de lien (LR) et d'un registre de comptage (CTR) du processeur sur lequel la première séquence spécifique s'exécute, au moyen d'une quatrième adresse déterminée (A5); - une instruction pour charger la troisième adresse déterminée (A4) dans le registre de comptage (CTR); - une instruction de branchement utilisant le registre de comptage (CTR); - une ou plusieurs instructions pour charger dans le registre de lien (LR) et dans le registre de comptage (CTR) le contenu sauvegardé au moyen de la quatrième adresse déterminée (A5); - une instruction de retour basée sur le contenu du registre de lien (LR). I, 4. Procédé selon la revendication 2, caractérisé en ce que la deuxième séquence de code binaire est contenue dans une seule page physique de la machine, ou à défaut, dans des pages physiques contigues de la machine. 5. Procédé selon la revendication 2, caractérisé en ce que la deuxième séquence de code binaire contient une instruction (bctrlA3) dont l'exécution a pour effet un branchement sur l'adresse de la première instruction (Instr.20) de code binaire de la première fonction. 6. Machine informatique dont le comportement résulte d'exécutions de code binaire de fonctions, ledit code binaire résidant dans une première zone mémoire (7) d'une unité de mémoire (5), caractérisée en ce qu'elle comprend hors de la première zone mémoire (7): - une séquence spécifique de code binaire (Instr.30,..., Instr.36, blr) dont une exécution modifie le comportement de la machine; - une interface opérateur (13) comprenant une entrée (14) pour recevoir un nom de première fonction dont le code binaire réside dans la première zone 2789193 mémoire (7), prévue pour ranger dans une deuxième zone mémoire (8) ladite séquence spécifique de code binaire à partir d'une première adresse déterminée (A1) et pour remplacer dans la première zone mémoire (7), chaque instruction de branchement sur ladite première fonction par une instruction de branchement sur ladite première adresse (A1). 7. Machine informatique selon la revendication 5, caractérisée en ce qu'elle comprend hors de la première zone mémoire (7), une deuxième séquence de code binaire réalisant une deuxième fonction déterminée, en ce que l'interface io opérateur (13) comprend une entrée (17) pour recevoir un nom de deuxième fonction, prévue pour ranger une deuxième séquence de code binaire réalisant la deuxième fonction dans une troisième zone mémoire (9), et en ce que ladite séquence spécifique de code binaire comprend une instruction de branchement sur la deuxième séquence de code binaire en zone mémoire (9).