FR2783065A1 - Procede de compression de code interpretable - Google Patents
Procede de compression de code interpretable Download PDFInfo
- Publication number
- FR2783065A1 FR2783065A1 FR9811145A FR9811145A FR2783065A1 FR 2783065 A1 FR2783065 A1 FR 2783065A1 FR 9811145 A FR9811145 A FR 9811145A FR 9811145 A FR9811145 A FR 9811145A FR 2783065 A1 FR2783065 A1 FR 2783065A1
- Authority
- FR
- France
- Prior art keywords
- code
- interpreted
- duplicated
- sequence
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4436—Exlining; Procedural abstraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Le procédé de réduction de taille mémoire occupé par le code d'une application interprétée, mémorisé au sein d'une carte à puce dotée d'un interpréteur, comporte les étapes suivantes :- lecture du code interprété de l'application, et reconnaissance, dans le code interprété, des séquences dupliquées à l'identique au moins deux fois,- pour au moins un groupe de séquences dupliquées de code interprété, définition d'une portion de code interprété identique à ces séquences dupliquées, appelée " séquence de compression ", et mémorisation de cette séquence de compression- remplacement d'au moins une séquence dupliquée d'un groupe de séquences dupliquées dans le code interprété original par une séquence d'appel de la séquence de compression correspondante.
Description
"Procédé de compression de code interprétable" Le procédé objet de la
présente invention est du domaine des procédés de compression de code informatique. Elle concerne plus particulièrement les applications exécutées dans des cartes à puce et les dispositifs disposant d'un
interpréteur de code, tel que machines virtuelles "Java".
La technologie actuelle des microcircuits pour cartes à puce ne permet encore que de faibles capacités pour les différentes mémoires du microcircuit, ce qui incite à rechercher la diminution de la taille des applications chargées dans les mémoires de ces cartes à puce. Ces mémoires sont essentiellement de type soit non volatile modifiable (par exemple de type dit "EEPROM", "flash", etc.), soit non volatile non modifiable (par exemple de type dit "ROM"), soit mémoires vives à accès direct (de type dit " RAM"). On est donc en présence d'une limitation de capacité mémoire, ce qui limite également la taille et le
nombre des applications réalisables avec les cartes à puce actuelles.
La présente invention entend donc remédier à cet inconvénient en proposant un procédé de compression de code interprété mémorisé dans la carte à puce, de manière à réduire sensiblement la taille mémoire occupée par
une application donnée.
Selon un second objectif de l'invention, le procédé est simple de mise en oeuvre et rapide d'exécution. Il s'applique à des dispositifs de carte à puce
existants sans modification.
Le procédé selon l'invention est donc un procédé de réduction de taille mémoire occupé par le code d'une application, mémorisé dans un dispositif adapté au sein d'une carte dite "à puce", ladite carte étant dotée d'un interpréteur dit "machine virtuelle", I'application étant interprétée par la machine virtuelle, caractérisé en ce qu'il comporte les étapes suivantes: - lecture du code interprété de l'application, et reconnaissance, dans le code interprété, des séquences dupliquées à l'identique au moins deux fois, - pour au moins un groupe de séquences dupliquées de code interprété, définition d'une portion de code interprété identique à ces séquences dupliquées, appelée "séquence de compression", et mémorisation de cette séquence de compression (SDC), - remplacement d'au moins une séquence dupliquée d'un groupe de séquences dupliquées dans le code interprété original par une séquence d'appel de la séquence de compression (SDC) correspondante. On comprend que l'utilisation de compression de code dans le domaine des applications de carte à puce répond au problème de limitation de capacité
mémoire de ces cartes.
Par ailleurs, cette disposition repose sur une analyse par séquences d'octets, au contraire des techniques classiques de compression, qui "travaillent" sur des séquences de bits, sans tenir compte de leur signification. La méthode proposée tient compte de ce que les séquences d'octets du code interprété
représentent les instructions d'une machine virtuelle.
On note également que ce procédé permet effectivement de réduire la taille occupée par une application écrite en code interprété par une machine virtuelle implémentée dans une carte à puce, sans augmentation significative du
jeu d'instructions de la machine virtuelle.
Selon une mise en oeuvre préférée, la séquence d'appel de la séquence de compression est un octet unique de code interprété réalisant l'appel de la
séquence de compression.
Cette disposition est favorable à une bonne réduction de taille du code interprété. Selon une mise en oeuvre préférée, la définition de séquence de compression est réalisée pour des groupes de séquences dupliquées de code interprété, vérifiant certains critères. Préférentiellement, les critères appliqués aux séquences dupliquées comportent en particulier les points suivants: - ne pas contenir d'instruction de saut aboutissant en dehors de la séquence de compression (SDC), - ne pas accepter qu'une instruction de saut aboutisse à l'intérieur d'une séquence de compression (SDC), - ne pas contenir de code résultant de l'exécution de code interprété en sous-programme. Ces dispositions permettent de réaliser une implémentation du procédé
restreinte aux cas de compression simples.
La description et les dessins qui suivent permettront de mieux
comprendre les buts et avantages de l'invention. Il est clair que cette description
est donnée à titre d'exemple, et n'a pas de caractère limitatif. Dans les dessins: - les figures la et lb représentent schématiquement un code interprété avant (figure la) et après (figure lb) mise en oeuvre du procédé; - la figure 2 représente la table des pointeurs et la zone des séquences
de compression dans la mémoire du microcircuit.
Dans le cadre de la description donnée ici à titre non limitatif,
l'assemblage décrit est celui d'une carte plastique de type " carte à puce " à machine virtuelle, de type connu de l'homme de l'art, dans lesquelles des applications interprétées sont chargées dynamiquement dans la mémoire non volatile modifiable du microcircuit (par exemple de type dit "EEPROM" ou "Flash"). Elle s'applique tout aussi bien aux applications interprétées inscrites en fabrication dans la mémoire non volatile non modifiable du microcircuit (de type ROM). Le procédé réalise la compression du code d'une application interprété destiné à être mémorisé dans une carte dite à puce dotée d'un interpréteur ("machine virtuelle"). Le procédé est alors mis en oeuvre de la manière suivante (par exemple par un système informatique dans lequel le code interprété est mémorisé selon une méthode et avec des dispositifs connus en soi): 1/ Le code interprété de l'application est tout d'abord parcouru, et on procède à une reconnaissance, dans le code interprété, des séquences (de longueur minimale 2 octets), dupliquées à l'identique au moins deux fois. Cette reconnaissance est réalisée selon des algorithmes connus de l'homme de métier
et hors du champ de la présente invention.
2/ Pour chaque groupe de séquences dupliquées de code interprété, il est défini une portion de code interprété identique à ces séquences dupliquées, appelée "séquence de compression" (SDC), et on enregistre en mémoire au sein du microcircuit de la carte à puce cette séquence de compression, 3/ En revenant alors au code interprété original, on procède au remplacement de chaque séquence dupliquée dans le code interprété original par une séquence d'appel de la séquence de compression (SDC) correspondante. Tel que représenté sur la figure 1, une implémentation particulière du procédé selon l'invention consiste à désigner une séquence de compression (SDC) par la valeur N de l'index correspondant de la table des pointeurs (figure 2) sur la zone des SDC, et à ajouter les instructions suivantes au jeu d'instructions de la machine virtuelle: "appel court SDC n N", avec N compris entre 0 et 15, N faisant partie de l'octet d'instruction, constitué de 4 bits de code opératoire et de 4 bits représentant N, - "appel long SDC n N", avec N supérieur à 15, et nécessitant un octet d'opérande à la suite de l'octet d'instruction pour contenir N,
- "retour de SDC".
Cette troisième instruction, de longueur un octet, n'est d'ailleurs pas nécessaire dans le cas o les SDC sont stockées de manière contiguë dans I'espace mémoire réservé aux SDC, ce qui est le cas dans l'implémentation décrite, car la différence entre les valeurs des pointeurs sur deux séquences de compression consécutives SDCN+1 et SDCN fournit alors la longueur de la séquence SDCN, ce qui permet de déterminer le retour de SDCN sans l'aide
d'instruction "retour de SDC".
Dans cette implémentation, en supposant qu'un code interprété fait appel A fois à une séquence de compression SDCN contenant L octets, la réduction de taille de code interprété est de G octets par rapport au code sans création de séquence de compression, avec: G = A x L (taille mémoire dans le code interprété original) - A (octets d'appels à la SDCN insérés dans le code transformé) - L (longueur de la SDCN dans l'espace mémoire) - 1 (octet de retour de la SDCN) - 2 (octets de la table des pointeurs sur la SDCN), soit G = (A-l) x (L-1)-4 Par exemple, pour une séquence de compression comportant 4 octets et appelée 5 fois, le gain est de 8 octets. Il est évident que si le gain est inférieur à
zéro, le code initial n'est pas transformé.
Pour obtenir une implémentation simple, des restrictions sont imposées aux séquences de compression (SDC), et en particulier les suivantes: - ne pas contenir d'instruction de saut aboutissant en dehors de la SDC, - ne pas accepter qu'une instruction de saut aboutisse à l'intérieur d'une SDC (c'est-à-dire refuser de transformer en SDC des séquences au milieu desquelles aboutit une instruction de saut), - ne pas contenir de code résultant en l'exécution de code interprété en sous- programme (la récursivité des séquences de compression, c'est-à-dire I'appel d'une SDC dans une SDC, n'est pas supportée). L'appel de code natif reste néanmoins autorisé,
- ne pas se terminer entre un code opératoire et son (ses) opérande(s).
Une fois le code transformé selon le procédé décrit, ce code est mémorisé dans le microcircuit de la carte à puce à machine virtuelle de façon
classique.
On comprend que ce procédé présente l'avantage de ne pas augmenter significativement le jeu d'instructions de la machine virtuelle, à chaque création d'une séquence de compression, puisque le procédé n'ajoute que deux ou trois
instructions nouvelles à la machine virtuelle.
Il est à noter que les SDC se distinguent à la fois des sous-programmes et des macro-instructions. En effet, contrairement aux sous-programmes, I'appel à la SDC et le retour de la SDC n'utilisent pas la pile du microcircuit, et cette pile peut être dans des états différents lors de l'appel à la SDC et lors du retour de la SDC, (ce qui ne serait pas le cas avec un sous-programme classique). Vis-à-vis d'une macro- instruction, lors du traitement par un macro-processeur associé, la macro-instruction est remplacée par la séquence de code qu'elle représente,
chaque fois qu'elle apparaît dans le code source initial.
La portée de la présente invention ne se limite pas aux détails des formes de réalisation ci-dessus considérés à titre d'exemple, mais s'étend au contraire aux modifications à la portée de l'homme de l'art. li1
Claims (4)
1. Procédé de réduction de taille mémoire occupé par le code d'une application, mémorisé dans un dispositif adapté au sein d'une carte dite "à puce", ladite carte étant dotée d'un interpréteur dit "machine virtuelle", l'application étant interprétée par la machine virtuelle, caractérisé en ce qu'il comporte les étapes suivantes: - lecture du code interprété de l'application, et reconnaissance, dans le code interprété, des séquences dupliquées à l'identique au moins deux fois, - pour au moins un groupe de séquences dupliquées de code interprété, définition d'une portion de code interprété identique à ces séquences dupliquées, appelée "séquence de compression", et mémorisation de cette séquence de compression (SDC), - remplacement d'au moins une séquence dupliquée d'un groupe de séquences dupliquées dans le code interprété original par une séquence d'appel
de la séquence de compression (SDC) correspondante.
2. Procédé selon la revendication 1, caractérisé en ce que la séquence d'appel de la séquence de compression est un octet unique de code interprété
réalisant l'appel de la séquence de compression.
3. Procédé selon la revendication 2, caractérisé en ce que la définition de séquence de compression est réalisée pour des groupes de séquences
dupliquées de code interprété, vérifiant certains critères.
4. Procédé selon la revendication 3, caractérisé en ce que les critères appliqués aux séquences dupliquées comportent en particulier les points suivants: - ne pas contenir d'instruction de saut aboutissant en dehors de la séquence de compression (SDC), - ne pas accepter qu'une instruction de saut aboutisse à l'intérieur d'une séquence de compression (SDC), - ne pas contenir de code résultant en l'exécution de code interprété en sous-programme,
- ne pas se terminer entre un code opératoire et son (ses) opérande(s).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9811145A FR2783065B1 (fr) | 1998-09-07 | 1998-09-07 | Procede de compression de code interpretable |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9811145A FR2783065B1 (fr) | 1998-09-07 | 1998-09-07 | Procede de compression de code interpretable |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2783065A1 true FR2783065A1 (fr) | 2000-03-10 |
FR2783065B1 FR2783065B1 (fr) | 2001-01-19 |
Family
ID=9530182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9811145A Expired - Lifetime FR2783065B1 (fr) | 1998-09-07 | 1998-09-07 | Procede de compression de code interpretable |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2783065B1 (fr) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003088039A2 (fr) * | 2002-04-15 | 2003-10-23 | Giesecke & Devrient Gmbh | Optimisation d'un code programme genere par compilateur |
EP2017732A1 (fr) * | 2007-06-22 | 2009-01-21 | Continental Automotive GmbH | Procédé et dispositif destinés à comprimer un logiciel pour un dispositif de commande |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481708A (en) * | 1992-06-05 | 1996-01-02 | Borland International, Inc. | System and methods for optimizing object-oriented compilations |
-
1998
- 1998-09-07 FR FR9811145A patent/FR2783065B1/fr not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481708A (en) * | 1992-06-05 | 1996-01-02 | Borland International, Inc. | System and methods for optimizing object-oriented compilations |
Non-Patent Citations (3)
Title |
---|
BAKER B S: "On finding duplication and near-duplication in large software systems", PROCEEDINGS. SECOND WORKING CONFERENCE ON REVERSE ENGINEERING (CAT. NO.95TB8101), PROCEEDINGS OF 2ND WORKING CONFERENCE ON REVERSE ENGINEERING, TORONTO, ONT., CANADA, 14-16 JULY 1995, ISBN 0-8186-7111-4, 1995, Los Alamitos, CA, USA, IEEE Comput. Soc. Press, USA, pages 86 - 95, XP002098349 * |
GUTHERY: "JAVA CARD: Internet Computing on a Smart Card", IEEE INTERNET COMPUTING, February 1997 (1997-02-01), pages 57 57, XP002077647 * |
VAHID F: "Procedure exlining: a transformation for improved system and behavioral synthesis", PROCEEDINGS OF THE EIGHTH INTERNATIONAL SYMPOSIUM ON SYSTEM SYNTHESIS (IEEE CAT. NO.95TH8050), PROCEEDINGS OF THE EIGHTH INTERNATIONAL SYMPOSIUM ON SYSTEM SYNTHESIS, CANNES, FRANCE, 13-15 SEPT. 1995, ISBN 0-8186-7076-2, 1995, Los Alamitos, CA, USA, IEEE Comput. Soc. Press, USA, pages 84 - 89, XP002098348 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003088039A2 (fr) * | 2002-04-15 | 2003-10-23 | Giesecke & Devrient Gmbh | Optimisation d'un code programme genere par compilateur |
WO2003088039A3 (fr) * | 2002-04-15 | 2004-11-04 | Giesecke & Devrient Gmbh | Optimisation d'un code programme genere par compilateur |
US7805718B2 (en) | 2002-04-15 | 2010-09-28 | Giesecke & Devrient Gmbh | Optimisation of a compiler generated program code |
EP2017732A1 (fr) * | 2007-06-22 | 2009-01-21 | Continental Automotive GmbH | Procédé et dispositif destinés à comprimer un logiciel pour un dispositif de commande |
Also Published As
Publication number | Publication date |
---|---|
FR2783065B1 (fr) | 2001-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1046105B1 (fr) | Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants | |
EP0479655B1 (fr) | Circuit intégré pour une carte à microprocesseur conçue pour recevoir des programmes multiples en mémoire programmable | |
FR2612316A1 (fr) | Carte a circuits integres ayant une capacite de verification d'erreur interne | |
US6334210B1 (en) | Language processing system and language processing method enabling reduction of memory region and overhead in profile information collection of computer | |
FR2809200A1 (fr) | Procede de securisation d'un langage du type a donnees typees, notamment dans un systeme embarque et systeme embarque de mise en oeuvre du procede | |
EP2453356B1 (fr) | Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle | |
FR2841997A1 (fr) | Securisation d'application telechargee notamment dans une carte a puce | |
FR2783065A1 (fr) | Procede de compression de code interpretable | |
FR2827974A1 (fr) | Procede pour la compression d'un code interprete par analyse semantique | |
EP0908813A2 (fr) | Méthode et appareil pour réaliser des endroits de retour multiples | |
EP0604310B1 (fr) | Procédé de gestion d'une mémoire tampon, et système informatique l'incorporant | |
FR2804524A1 (fr) | Procede d'execution d'un protocole cryptographique entre deux entites electroniques | |
EP1316874A1 (fr) | Blocage du fonctionnement d'un circuit intégré | |
CN1302428C (zh) | 编程可写集成电路卡及其方法 | |
FR2823330A1 (fr) | Procede et systeme de gestion de donnees destinees a etre stockees dans une memoire, par exemple du code d'une application charge dans une carte a puce programmable | |
FR2733065A1 (fr) | Procede et circuit de lecture anticipee d'instrutions/ donnees utilisant un cache de lecture anticipee non consulte | |
WO2003027851A1 (fr) | Procede et dispositif de verifieur de code optimise | |
EP2901291B1 (fr) | Procédé de gestion des ressources mémoire d'un dispositif de sécurité, tel qu'une carte à puce, et dispositif de sécurité mettant en oeuvre ledit procédé. | |
EP1436694B1 (fr) | Microprocesseur disposant d'un espace adressable etendu | |
FR2587519A1 (fr) | Agencement de changement de mode permettant de changer selectivement des modes d'exploitation d'un systeme de machine virtuelle | |
EP3470999A1 (fr) | Sécurisation d'instructions de branchement conditionnel composé dans un programme informatique en code intermédiaire | |
WO2003038728A3 (fr) | Systeme informatique et procede utilisant des donnees de spectrometrie de masse et une base de donnees proteine pour l'identification de proteines inconnues | |
FR2732134A1 (fr) | Systeme informatique avec memoires hierarchisees | |
WO2003019366A1 (fr) | Compression d'un programme en langage intermediaire | |
FR2809847A1 (fr) | Procede de personnalisation electrique de carte a puce |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 19 |
|
PLFP | Fee payment |
Year of fee payment: 20 |
|
CA | Change of address |
Effective date: 20201007 |
|
CD | Change of name or company name |
Owner name: IDEMIA FRANCE, FR Effective date: 20201007 |