REVENDICATIONS 1. Protocole de gestion d'un fragment de programme téléchargé sur un système embarqué reprogrammable, tel qu'une carte à microprocesseur munie d'une mémoire réinscriptible, ledit fragment de programme étant constitué par un code objet, suite d'instructions, exécutable par le microprocesseur du système embarqué par l'intermédiaire d'une machine virtuelle munie d'une pile d'exécution et de registres ou variables locales manipulées par ces instructions et permettant d'interpréter ce code objet, ledit système embarqué étant interconnecté à un terminal, caractérisé en ce que ce protocole consiste au moins, au niveau dudit système embarqué : a) à détecter une commande de téléchargement de ce fragment de programme ; et sur réponse positive à cette étape consistant à détecter une commande de téléchargement, b) à lire le code objet constitutif de ce fragment de programme et à mémoriser temporairement ce code objet dans ladite mémoire réinscriptible ; c) à soumettre l'ensemble du code objet mémorisé temporairement à un processus de vérification instruction par instruction, ce processus de vérification consistant au moins en une étape d'initialisation de la pile des types et du tableau des types de registres, représentant l'état de ladite machine virtuelle au début de l'exécution du code objet mémorisé temporairement et en une succession d'étapes de vérification instruction par instruction, par discrimination de l'existence, pour chaque instruction courante, d'une cible, cible d'instruction de branchement, cible d'un appel d'un gestionnaire d'exceptions ou cible d'un appel de sous-routine et par une vérification et une actualisation de l'effet de ladite instruction courante sur la pile des types et sur le tableau des types de registres, et, dans le cas d'une vérification réussie dudit code objet, d) à enregistrer le fragment de programme téléchargé dans un répertoire de fragments de programmes disponibles, et e) à renvoyer audit lecteur un accusé de réception positif ; et, dans le cas d'une vérification non réussie dudit code objet, f) à effacer le fragment de programme enregistré momentanément, en l'absence d'enregistrement de ce dernier dans ledit répertoire de fragments de programmes disponibles, et g) à adresser audit lecteur un code d'erreur. 2. Protocole selon la revendication 1, caractérisé en ce que, sur réponse négative à ladite étape a) consistant à détecter une commande de téléchargement, celui-ci consiste : b') à détecter une commande de sélection d'un fragment de programme disponible dans un répertoire de fragments de programmes ; et, sur réponse positive à cette étape consistant à détecter une commande de sélection d'un fragment de programme disponible ; c') à appeler ledit fragment de programme disponible sélectionné ; d') à exécuter ledit fragment de programme disponible appelé par l'intermédiaire de la machine virtuelle, en l'absence de toute vérification dynamique de types de variables, des droits d'accès aux objets manipulés par le fragment de programme disponible appelé, du débordement de la pile d'exécution lors de l'exécution de chaque instruction, et, sur réponse négative à cette étape consistant à détecter une commande de sélection d'un fragment de programme disponible, e') à procéder au traitement des commandes standards du système embarqué. 3. Procédé de vérification d'un fragment de programme téléchargé sur un système embarqué reprogrammable, tel qu'une carte à microprocesseur munie d'une mémoire réinscriptible, ledit fragment de programme étant constitué par un code objet et comportant au moins un sous-programme, suite d'instructions, exécutable par le microprocesseur du système embarqué par l'intermédiaire d'une machine virtuelle munie d'une pile d'exécution et de registres d'opérandes manipulés par ces instructions et permettant d'interpréter ce code objet, ledit système embarqué étant interconnecté à un lecteur, caractérisé en ce que ledit procédé consiste, suite à la détection d'une commande de téléchargement et à la mémorisation dudit code objet constitutif de ce fragment de programme dans ladite mémoire réinscriptible, pour chaque sous-programme : a) à effectuer une étape d'initialisation de la pile des types et du tableau des types de registres par des données représentant l'état de la machine virtuelle au début de l'exécution du code objet mémorisé temporairement ; ss) à effectuer une vérification dudit code objet mémorisé temporairement instruction par instruction, par discrimination de l'existence, pour chaque instruction courante, d'une cible, cible d'instruction de branchement, cible d'un appel d'un gestionnaire d'exceptions ou cible d'un appel de sous-routine ; y) à effectuer une vérification et une actualisation de l'effet de ladite instruction courante sur les types de données de ladite pile des types et dudit tableau des types de registres, en fonction de l'existence d'une cible d'instruction de branchement, d'une cible d'un appel de sous-routine ou d'une cible d'un appel de gestionnaire d'exceptions, ladite vérification étant réussie lorsque le tableau des types de registres n'est pas modifié au cours d'une vérification de toutes les instructions et le processus de vérification étant poursuivi instruction par instruction jusqu'à ce que le tableau des types de registres soit stable, en l'absence de modification, le processus de vérification étant interrompu sinon. 4. Procédé de vérification selon la revendication 3, caractérisé en ce que les types de variables manipulées au cours du processus de vérification comprennent au moins : - des identificateurs de classes correspondant aux classes d'objets définies dans le fragment de programme ; - des types de variables numériques comportant au moins un type short, entier codé sur p bits, et un type retaddr d'adresse de retour d'une instruction de saut JSR ; - un type null relatif à des références d'objets nulles ; - un type object relatif aux objets ; - un premier type spécifique #, représentant l'intersection de tous les types et correspondant à la valeur 0, nil ; - un deuxième type spécifique T, représentant l'union de tous les types et correspondant à tout type de valeur. 5. Procédé selon la revendication 4, caractérisé en ce que l'ensemble desdits types de variables vérifie une relation de sous-typage : object e T; short, retaddr e T; # E null, short, retaddr. 6. Procédé selon l'une des revendications 3 à 5, caractérisé en ce que lorsque ladite instruction courante est la cible d'une instruction de branchement, ledit procédé de vérification consiste à vérifier que la pile des types est vide, le processus de vérification étant poursuivi pour l'instruction suivante dans le cas d'une vérification positive, et, le processus de vérification échouant et le fragment de programme étant rejeté sinon. 7. Procédé selon l'une des revendications 3 à 6, caractérisé en ce que lorsque ladite instruction courante est la cible d'un appel de sous-routine, ledit processus de vérification vérifie que l'instruction précédente constitue un branchement inconditionnel, un retour de sous-routine ou une levée d'exception, ledit processus de vérification, en cas de vérification positive, procédant à une réactualisation de la pile des types de variables par une entité de type retaddr, adresse de retour de la sousroutine, et, le processus de vérification échouant et le fragment de programme étant rejeté sinon. 8. Procédé selon l'une des revendications 3 à 7, caractérisé en ce que lorsque l'instruction courante est la cible d'un gestionnaire d'exceptions, ledit processus de vérification vérifie que l'instruction précédente constitue un branchement inconditionnel, un retour de sous-routine ou une levée d'exception, ledit processus de vérification, en cas de vérification positive, procédant à une réactualisation de la pile des types par une entrée du type des exceptions, et, le processus de vérification échouant et le fragment de programme étant rejeté sinon. 9. Procédé selon l'une des revendications 3 à 8, caractérisé en ce que lorsque l'instruction courante est la cible d'une pluralité de branchements incompatibles, le processus de vérification échoue et le fragment de programme est rejeté. 10. Procédé selon l'une des revendications 3 à 9, caractérisé en ce que lorsque l'instruction courante n'est la cible d'aucun branchement, le processus de vérification continue par passage à une réactualisation de la pile des types. 11. Procédé selon l'une des revendications 3 à 10, caractérisé en ce que l'étape de vérification de l'effet de l'instruction courante sur la pile des types comporte au moins : - une étape de vérification que la pile d'exécution des types contient au moins autant d'entrées que l'instruction courante comporte d'opérandes ; - une étape de dépilement et de vérification que les types des entrées au sommet de la pile sont sous-types des types des opérandes de cette instruction ; - une étape de vérification de l'existence d'un espace mémoire suffisant sur la pile des types pour procéder à l'empilement des résultats de l'instruction courante ; - une étape d'empilement sur la pile des types de données attribués à ces résultats. 12. Procédé selon la revendication 11, caractérisé en ce que lorsque l'instruction courante est une instruction de lecture d'un registre d'adresse n, le processus de vérification consiste : - à vérifier le type de donnée du résultat de cette lecture par consultation de l'entrée n du tableau des types de registres ; - à déterminer l'effet de l'instruction courante sur la pile des types par dépilement des entrées de la pile correspondant aux opérandes de cette instruction courante et par empilement du type de données de ce résultat. 13. Procédé selon la revendication 11, caractérisé en ce que lorsque l'instruction courante est une instruction d'écriture d'un registre d'adresse m, le processus de vérification consiste : - à déterminer l'effet de l'instruction courante sur la pile des types et le type t de l'opérande écrit dans ce registre d'adresse m ; - à remplacer l'entrée de type du tableau des types de registres à l'adresse m par le type immédiatement supérieur au type précédemment stocké et au type t de l'opérande écrit dans ce registre d'adresse m. 14. Procédé de transformation d'un code objet d'un fragment de programme, dans lequel les opérandes de chaque instruction appartiennent aux types de données manipulées par cette instruction, la pile d'exécution ne présente pas de phénomène de débordement, pour chaque instruction de branchement le type des variables de pile au niveau de ce branchement est le même qu'au niveau des cibles de ce branchement, en un code objet normalisé pour ce même fragment de programme, dans lequel les opérandes de chaque instruction appartiennent aux types de données manipulées par cette instruction, la pile d'exécution ne présente pas de phénomène de débordement, la pile d'exécution est vide à chaque instruction de branchement et à chaque instruction de cible de branchement, caractérisé en ce que ce procédé consiste, pour l'ensemble des instructions dudit code objet : - à annoter chaque instruction courante par le type de données de la pile avant et après l'exécution de cette instruction, les données d'annotation étant calculées au moyen d'une analyse du flot des données relatif à cette instruction ; - à détecter au sein desdites instructions et de chaque instruction courante l'existence de branchements respectivement de cibles de branchements pour lesquels ladite pile d'exécution n'est pas vide, l'opération de détection étant conduite à partir des données d'annotation du type des variables de pile allouées à chaque instruction courante, et en présence d'une détection d'une pile d'exécution non vide, - à insérer des instructions de transfert des variables de pile de part et d'autre de ces branchements respectivement de ces cibles de branchements afin de vider le contenu de la pile d'exécution dans des registres temporaires avant ce branchement et de rétablir la pile d'exécution à partir desdits registres temporaires après ce branchement, et à n'insérer aucune instruction de transfert sinon, ce qui permet d'obtenir un code objet normalisé pour ce même fragment de programme, dans lequel la pile d'exécution est vide à chaque instruction de branchement et à chaque instruction de cible de branchement, en l'absence de modification de l'exécution dudit fragment de programme . ; 15. Procédé de transformation d'un code objet d'un fragment de programme, dans lequel les opérandes de chaque instructions appartiennent aux types de données manipulées par cette instruction, et un opérande de type déterminé écrit dans un registre par une instruction de ce code objet est relu depuis ce même registre par une autre instruction de ce code objet avec le même type de donnée déterminé, en un code objet normalisé pour ce même fragment de programme, dans lequel les opérandes de chaque instruction appartiennent aux types de données manipulées par cette instruction, un seul et même type de donnée étant alloué à un même registre dans tout ledit code objet normalisé, caractérisé en ce que ce procédé consiste, pour l'ensemble des instructions dudit code objet : - à annoter chaque instruction courante par le type de donnée des registres avant et après l'exécution de cette instruction, les données d'annotation étant calculées au moyen d'une analyse du flot des données relatif à cette instruction ; - à effectuer une réallocation des registres par détection des registres d'origine employés avec des types différents, division de ces registres d'origine en registres normalisés distincts, un registre normalisé pour chaque type de donnée utilisé, et une réactualisation des instructions qui manipulent les opérandes qui font appel auxdits registres normalisés. 16. Procédé selon la revendication 14, caractérisé en ce que l'étape consistant à détecter au sein desdites instructions et de chaque instruction courante l'existence de branchements respectivement de cibles de branchement pour laquelle la pile d'exécution n'est pas vide consiste, suite à la détection de chaque instruction de rang i correspondant : - à associer à chaque instruction de rang i un ensemble de nouveaux registres, un nouveau registre étant associé à chaque variable de pile active au niveau de cette instruction ; - à examiner chaque instruction détectée de rang i et à discriminer l'existence d'une cible de branchement respectivement d'un branchement, et dans le cas où l'instruction de rang i est une cible de branchement et que la pile d'exécution au niveau de cette instruction n'est pas vide, # pour toute instruction précédente, de rang i-1, constituée par un branchement, une levée d'exception ou un retour de programme, l'instruction détectée de rang i n'étant accessible que par un branchement, ## à insérer un ensemble d'instructions de chargement load à partir de l'ensemble de nouveaux registres antérieurement à ladite instruction détectée de rang i, avec redirection de tous les branchements vers l'instruction détectée de rang i vers la première instruction de chargement load insérée ; et # pour toute instruction précédente, de rang i-1, continuant en séquence, l'instruction détectée de rang i étant accessible à la fois par l'intermédiaire d'un branchement et de l'instruction précédente de rang i-1, ## à insérer un ensemble d'instructions de sauvegarde store vers l'ensemble de nouveaux registres antérieurement à ladite instruction détectée de rang i et un ensemble d'instructions de chargement load à partir de cet ensemble de nouveaux registres, avec redirection de tous les branchements vers l'instruction détectée de rang i vers la première instruction de chargement load insérée, et, dans le cas où ladite instruction détectée de rang i est un branchement vers une instruction déterminée, # pour toute instruction détectée de rang i constituée par un branchement inconditionnel, ## à insérer antérieurement à l'instruction détectée de rang i une pluralité d'instructions de sauvegarde store, à chaque nouveau registre étant associée une instruction de sauvegarde ; et # pour toute instruction détectée de rang i constituée par un branchement conditionnel et pour un nombre m > 0 d'opérandes manipulés par cette instruction de branchement conditionnel, ## à insérer antérieurement à cette instruction détectée de rang i une instruction de permutation, swap-x, au sommet de la pile d'exécution des m opérandes de l'instruction détectée de rang i et des n valeurs suivantes, cette opération de permutation permettant de ramener au sommet de la pile d'exécution les n valeurs à sauvegarder dans l'ensemble des nouveaux registres, et ## à insérer antérieurement à l'instruction de rang i un ensemble d'instructions de sauvegarde store vers l'ensemble de nouveaux registres, et ## à insérer postérieurement à l'instruction détectée de rang i un ensemble d'instructions de chargement load à partir de l'ensemble des nouveaux registres. 17. Procédé selon la revendication 15, caractérisé en ce que l'étape consistant à effectuer une réallocation des registres par détection des registres d'origine employés avec des types différents consiste : - à déterminer les intervalles de durée de vie de chaque registre ; - à déterminer le type de données principal de chaque intervalle de durée de vie, le type de données principal d'un intervalle de durée de vie j pour un registre r étant défini par la borne supérieure des types de données stockées dans ce registre r par les instructions de sauvegarde store appartenant à l'intervalle de durée de vie j ; - à établir un graphe d'interférences entre les intervalles de durée de vie, ce graphe d'interférences consistant en un graphe non orienté dont chaque sommet est constitué par un intervalle de durée de vie et dont les arcs entre deux sommets j1 et j2 existent si un sommet contient une instruction de sauvegarde adressée au registre de l'autre sommet ou réciproquement ; - à traduire l'unicité d'un type de donnée alloué à chaque registre dans le graphe d'interférences en ajoutant des arcs entre toute paire de sommets du graphe d'interférences tant que deux sommets d'une paire de sommets n'ont pas le même type de donnée principal associé ; à effectuer une instanciation du graphe d'interférences, par attribution à chaque intervalle de durée de vie d'un numéro de registre de telle manière qu'à deux intervalles de vie adjacents dans le graphe d'interférences soient attribués des numéros de registres différents. 18. Système embarqué reprogrammable par téléchargement de fragments de programmes, comportant au moins un microprocesseur, une mémoire vive, un module d'entrées/sorties, une mémoire non volatile reprogrammable électriquement et une mémoire permanente dans laquelle sont implantés un programme principal et une machine virtuelle permettant l'exécution du programme principal et d'au moins un fragment de programme par l'intermédiaire dudit microprocesseur, caractérisé en ce que ledit système embarqué comporte au moins un module de programme de gestion et de vérification d'un fragment de programme téléchargé suivant le protocole de gestion d'un fragment de programme téléchargé selon l'une des revendications 1 ou 2, ledit module de programme de gestion et de vérification étant implanté en mémoire permanente. 19. Système embarqué selon la revendication 18, caractérisé en ce que celui-ci comporte au moins un module de sous-programme de vérification d'un fragment de programme téléchargé, suivant le processus de vérification selon l'une des revendications 3 à 13. 20. Système de transformation d'un code objet d'un fragment de programme, dans lequel les opérandes de chaque instruction appartiennent aux types de données manipulées par cette instruction, la pile d'exécution ne présente pas de phénomène de débordement, pour chaque instruction de branchement le type de variables de pile au niveau de ce branchement est le même qu'au niveau des cibles de ce branchement et un opérande de type déterminé écrit dans un registre par une instruction de ce code objet est relu depuis ce même registre par une autre instruction de ce code objet avec le même type de donnée déterminé, en un code objet normalisé pour ce même fragment de programme dans lequel les opérandes de chaque instruction appartiennent aux types de données manipulées par cette instruction, la pile d'exécution ne présente pas de phénomène de débordement, la pile d'exécution est vide à chaque instruction de branchement et à chaque instruction de cible de branchement, un seul et même type de donnée étant alloué à un même registre dans tout ledit code objet normalisé, caractérisé en ce que ledit système de transformation comporte au moins, implanté en mémoire de travail d'un ordinateur de développement ou d'une station de travail, un module de programme de transformation de ce code objet en un code objet normalisé suivant le procédé selon les revendications 14 et 15, ce qui permet d'engendrer un code objet normalisé pour ledit fragment de programme satisfaisant aux critères de vérification de ce fragment de programme téléchargé.