Brevet FR2982385A1 — publié le 20130510

REVENDICATIONS1. Module (212) de compilateur pour fournir une prise en charge d'une signature d'instruction à un compilateur (210), le module (212) de compilateur étant caractérisé en ce qu'il comprend : un identificateur (213) d'élément de langage configuré pour identifier un élément de langage pertinent pour une signature d'instruction dans un code source de 10 langage de haut niveau fourni au compilateur (210) ; et un composant (215) d'insertion de réserve configuré pour interagir avec le compilateur (210) pour insérer au moins une réserve se rapportant à une signature d'instruction sur la base de l'élément de 15 langage se rapportant à une signature d'instruction dans un code compilé traité par le compilateur (210) sur la base du code source de langage de haut niveau. 2. Module de compilateur suivant la revendication 1, 20 caractérisé en ce que l'insertion de la réserve se rapportant à une signature conserve une fonction logique du code de langage de haut niveau d'origine donnée au compilateur. 25 3. Module de compilateur suivant la revendication 1 ou 2, caractérisé en ce qu'il comprend une interface de base de données configurée pour interroger une base de données comprenant une pluralité d'éléments de langage possible pertinente pour une signature d'instruction etdes réserves correspondantes se rapportant à une signature d'instruction à utiliser par l'identificateur d'éléments de langage et par le composant d'insertion de réserve. 4. Module de compilateur suivant la revendication 3, caractérisé en ce que la pluralité d'éléments de langage possible pertinente pour une signature d'instruction comprend au moins l'un d'un saut conditionnel, d'un élément si alors, d'un élément de cas de commutation, d'un élément de pendant une boucle, d'un élément fait pendant et d'un mot-clé dédié se rapportant à une signature d'instruction. 5. Module de compilateur suivant la revendication 3 ou 4, caractérisé en ce que la base de données comprend, en outre, au moins une règle d'insertion pour commander le composant d'insertion de réserve en ce qui concerne l'insertion de la au moins une réserve se rapportant à une signature d'instruction. 6. Module de compilateur suivant l'une quelconque des revendications précédentes, caractérisé en ce que le code compilé est un code en langage machine et le composant d'insertion de réserve est configuré pour sélectionner la au moins une réserve se rapportant à une signature d'instruction, de manière à ce qu'une dimension de la au moins une réserve se rapportant à une signature d'instruction soit égale au moins à une dimension d'une instruction en langage machine ou d'une séquence d'instruction en langage machine remplaçant finalement la au moins une réserve se rapportant à une signature d'instruction dans le code compilé. 7. Module de compilateur suivant l'une quelconque des revendications précédentes, caractérisé en ce que la au moins une réserve se rapportant à une signature d'instruction est l'une d'une réserve pour une valeur de signature de référence et d'une réserve pour une instruction se rapportant à une signature d'instruction. 8. Module de compilateur suivant l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend, en outre, un collecteur d'information. de réserve configuré pour collecteur une information de réserve sur des réserves se rapportant à une signature d'instruction insérée dans le code compilé et pour sortir l'information de réserve. 9. Mbdule de compilateur suivant l'une quelconque des revendications précédentes, caractérisé en ce que l'identificateur d'élément de langage est configuré pour identifier un segment de code de programme protégé pour lequel la prise en charge de la signature d'instruction est validée et le module de compilateur comprend, en outre, un collecteur d'information d'appel de bibliothèque configuré pour collecter de l'information d'appel de bibliothèque se rapportant à des appels de bibliothèque logiciel se produisant dans le segment de code de programme protégé et pour fournir l'information d'appel de bibliothèque en vue de l'utiliser pendant une opération de liaison venant ensuite. 10. Module de compilateur suivant l'une quelconque des revendications précédentes, caractérisé en ce que l'identificateur d'élément de langage est configuré pour identifier un début et une fin d'un segment de code de programme protégé dans le code source en langage de hautniveau, pour lequel la prise en charge d'une signature d'instruction est validée et le composant d'insertion de réserve est configuré pour utiliser un résultat d'une identification de segment protégé correspondant afin 5 d'activer l'insertion de la au moins une réserve se rapportant à une instruction dans le segment de code .programme protégé et de désactiver l'insertion de la au moins une réserve se rapportant à une signature d'instruction dans un segment de code de programme non 10 protégé. 11. Module de compilateur suivant l'une quelconque des revendications précédentes, caractérisé en ce que le composant d'insertion de réserve est configuré, en outre, 15 pour vérifier si. une optimisation de code du compilateur entre en conflit avec la au moins une réserve se rapportant à une signature d'instruction et, après vérification d'un conflit, pour empêcher le compilateur d'effectuer une optimisation du code compilé qui affecte 20 la au moins une réserve se rapportant à une signature d'instruction. 12. Générateur (250) de signature d'instruction, caractérisé en ce qu'il comprend : 25 une entrée pour un code compilé ; un identificateur (251) de réserve configuré pour identifier une réserve se rapportant à une signature d'instruction dans le code compilé ; un calculateur (253) de signature configuré pour 30 déterminer une valeur de signature pour un point de programme dans le code compilé où la réserve se rapportant à une signature d'instruction se produit ; etun remplaceur (255) de réserve configuré pour insérer un segment de code compilé sur la base de la valeur de signature au point de programme. 13. Générateur de signature d'instruction suivant la revendication 12, caractérisé en ce que le code compilé est l'un d'un code en langage machine et d'un code d'assembleur. 14. Générateur de signature d'instruction suivant la revendication 12 ou 13, caractérisé en ce que le segment de code compilé produit par le remplaceur de réserve occupe un espace dans le code compilé qui est égal à un espace occupé par la réserve se rapportant à une signature d'instruction. 15. Générateur de signature d'instruction suivant l'une quelconque des revendications 12 à 14, caractérisé en ce que le segment de code compilé comprend une instruction de processeur et le remplaceur de réserve est configuré pour sélectionner une instruction particulière de processeur parmi une pluralité d'instructions de processeur et pour produire le segment de code compilé sur la base de l'instruction particulière de processeur. 16. Générateur de signature d'instruction suivant l'une quelconque des revendications 12 à 15, caractérisé en ce que le calculateur de signature est configuré pour effectuer une analyse de bloc de base sur le code compilé sur la base de laquelle la valeur de signature est calculée. 17. Générateur de signature d'instruction suivant l'une quelconque des revendications 12 à 16, caractériséen ce qu'il comprend, en outre, une interface d'information de réserve configurée pour recevoir de l'information de réserve comprenant de l'information auxiliaire sur la réserve se rapportant à la signature de l'instruction et pour fournir l'information auxiliaire au calculateur de signature. 18. Générateur de signature d'instruction suivant la revendication 17, caractérisé en ce que l'information auxiliaire comprend au moins l'un d'une dimension d'une table se rapportant à un point de branchement multiple dans le code compilé, d'une adresse de mémoire indiquant une fin d'une fonction, d'une liste comprenant une information sur la au moins une réserve se rapportant à une signature d'instruction insérée dans le code compilé et sa position et d'une table d'adresse indiquant un début et une fin d'au moins un segment de code protégé dans le code compilé, pour lequel la prise en charge d'une signature d'instruction est validée et le calculateur de signature est configuré pour utiliser la table d'adresse pour déterminer la valeur de signature. 19. Procédé de traitement d'une information pertinente pour une signature d'instruction pendant une opération de 25 compilation d'un code source en langage de haut niveau, procédé caractérisé en ce que : on identifie un élément de langage pertinent pour une signature d'instruction dans le code source en langage de haut niveau ; et 30 on interagit avec l'opération de compilation afin d'insérer au moins une réserve se rapportant à une signature d'instruction sur la base de l'élément de langage pertinent pour une signature d'instruction dansun code compilé traité par l'opération de compilation sur la base du code source en langage de haut niveau. 20. Procédé suivant la revendication 19, caractérisé en ce que la réserve se rapportant à une signature est transparente à l'opération de compilation. 21. Procédé suivant la revendication 19 ou 20, caractérisé, en outre, en ce que : on interroge une base de données comprenant une pluralité d'éléments de langage possibles pertinents pour une signature d'instruction et des réserves correspondantes se rapportant à une signature d'instruction à utiliser pendant l'identification de l'élément de langage se rapportant à une signature d'instrudtion et pendant l'interaction avec l'opération de compilation. 22. Procédé suivant la revendication 21, caractérisé en ce que la pluralité d'éléments de langage possibles se rapportant à une signature d'instruction comprend au moins l'un d'un saut conditionnel, d'un élément si alors, d'un élément de cas de commutation, d'un élément pendant une boucle, d'un élément fait pendant et d'un mot-clé dédié se rapportant à une signature d'instruction. 23. Procédé suivant la revendication 21 ou 22, caractérisé en ce que la base de données comprend, en outre, une règle d'insertion pour commander l'insertion de la au moins une réserve se rapportant à une signature d'instruction. 24. Procédé suivant l'une quelconque des revendications 19 à 23, caractérisé en ce que le codecompilé est un code en langage machine et la au moins une réserve se rapportant à une signature d'instruction est sélectionnée, de manière à ce qu'une dimension de la au moins une réserve se rapportant à une signature d'instruction soit égale à une dimension d'une instruction en langage machine ou d'une séquence d'instruction en langage machine remplaçant finalement la au moins une réserve se rapportant à une signature d'instruction dans le code compilé. 25. Procédé suivant l'une quelconque des revendications 19 à 24, caractérisé en ce que la réserve se rapportant à une signature d'instruction est l'une d'une réserve pour une valeur de signature de référence, d'une réserve pour une valeur de mise à jour de signature et d'une réserve pour une instruction se rapportant à une signature d'instruction. 26. Procédé suivant l'une quelconque des revendications 19 à 25, caractérisé en ce qu'en outre : on recueille de l'information de réserve sur des réserves se rapportant à une signature d'instruction insérée dans le code compilé ; et on sort l'information de réserve. 27. Procédé suivant l'une quelconque des revendications 19 à 26, caractérisé en ce qu'en outre : on identifie un segment de code de programme protégé pour lequel la prise en charge d'une signature 30 d'instruction est validée ; on recueille de l'information d'appel de bibliothèque se rapportant à des appels de bibliothèque logiciels se produisant dans le segment de code de programme protégé ; eton fournit l'information d'appel de bibliothèque en vue de l'utiliser pendant une opération de liaison venant ensuite. 28. Procédé suivant l'une quelconque des revendications 19 à 27, caractérisé en ce qu'en outre : on identifie en tant qu'identification de segment protégé un début et une fin d'un segment de code de programme protégé dans le code source en langage de haut niveau pour lequel la prise en charge de la signature d'instruction est validée ; et on utilise un résultat de l'identification du segment protégé afin d'activer l'insertion de la au moins une réserve se rapportant à une signature d'instruction au sein du segment du code de programme protégé pour désactive.É l'insertion de la au moins une réserve se rapportant à une signature d'instruction. au sein du segment de code de programme protégé dans un segment de code de programme non protégé. 29. Procédé suivant l'une quelconque des revendications 19 à 28, caractérisé en ce qu'en outre : on vérifie si une optimisation de code de l'opération de compilation entre en conflit avec la au 25 moins une réserve se rapportant à une signature d'instruction et, après avoir trouvé un conflit, on empêche l'opération de compilation d'effectuer une optimisation du code compilé qui affecte la au moins une réserve se rapportant à une signature d'instruction. 30 30. Support de mémorisation numérique pouvant être exploitée par ordinateur et ayant mémorisé sur lui un programme informatique ayant un code de programme pour effectuer lorsqu'il passe sur un ordinateur un procédé detraitement d'une information pertinente pour une signature d'instruction pendant une opération de compilation d'un code source en langage de haut niveau, le procédé comprenant : identifier un élément de langage pertinent pour une signature d'instruction dans le code source en langage de haut niveau ; et interagir avec l'opération de compilation afin d'insérer au moins une réserve se rapportant à une signature d'instruction sur la base de l'élément de langage pertinent pour une signature d'instruction dans un code compilé traité par l'opération de compilation sur la base du code source en langage de haut niveau.