FR2667171A1 - Portable support with easily programmable microcircuit and method of programming this microcircuit - Google Patents

Portable support with easily programmable microcircuit and method of programming this microcircuit Download PDF

Info

Publication number
FR2667171A1
FR2667171A1 FR9011818A FR9011818A FR2667171A1 FR 2667171 A1 FR2667171 A1 FR 2667171A1 FR 9011818 A FR9011818 A FR 9011818A FR 9011818 A FR9011818 A FR 9011818A FR 2667171 A1 FR2667171 A1 FR 2667171A1
Authority
FR
France
Prior art keywords
program
microprocessor
memory
language
instructions
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
Application number
FR9011818A
Other languages
French (fr)
Other versions
FR2667171B1 (en
Inventor
Gordons Edouard
Grimonprez Georges
Paradinas Pierre
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gemplus SA
Original Assignee
Gemplus Card International SA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Gemplus Card International SA filed Critical Gemplus Card International SA
Priority to FR9011818A priority Critical patent/FR2667171B1/en
Publication of FR2667171A1 publication Critical patent/FR2667171A1/en
Application granted granted Critical
Publication of FR2667171B1 publication Critical patent/FR2667171B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data

Abstract

To solve programming problems in chip cards (smart cards), the microcircuit contained in these cards is furnished with a command interpreter program. Moreover, application programs are compiled in an intermediate language understandable to the command interpreter. It is shown that not only is memory space saved, but additionally, the task of the programmers is eased since they now need only program their applications in a high-level language which a priori was not suited to the programming of microprocessor cards.

Description

SUPPORT PORTABLE A MICRO-CIRCUIT FACILEMENT PROGRAMMABLE
ET PROCEDE DE PROGRAMMATION DE CE MICRO-CIRCUIT
La présente invention a été faite en collaboration avec le LABORATOIRE D'INFORMATIQUE FONDAMENTALE DE LILLE et avec le CENTRE D'ETUDES ET DE RECHERCHES EN
INFORMATIQUE MEDICALE dépendant respectivement de l'Université de Sciences et Techniques de Lille et de l'Université de Droit et de la Santé de Lille. La présente invention a pour objet un support à micro-circuit dont le micro-circuit est facilement programmable ainsi qu'un procédé de programmation de ce micro-circuit. Elle trouve plus particulièrement son application dans le domaine dit des cartes à puces. Dans ce cas le support est une carte au format carte de crédit.L'invention a pour objet de mettre à la disposition des programmeurs, pour des applications diverses devant avoir un caractère portable, la puissance de travail procurée par de tels supports. Par caractère portable on entend le fait que la carte, ou plus généralement un support quelconque de faible taille (quelques centimètres) et de faible poids (quelques centaines de grammes), peut en étant insérée dans un lecteur établir une transaction entre une machine reliée à ce lecteur et la carte. Cette transaction s'effectue alors selon un protocole et selon des instructions qui sont contenues dans la carte.
PORTABLE SUPPORT WITH EASY PROGRAMMABLE MICRO-CIRCUIT
AND METHOD FOR PROGRAMMING THIS MICRO-CIRCUIT
The present invention was made in collaboration with the LABORATOIRE D'INFORMATIQUE FONDAMENTALE DE LILLE and with the CENTER FOR STUDIES AND RESEARCH IN
MEDICAL INFORMATION TECHNOLOGY dependent respectively on the University of Sciences and Techniques of Lille and the University of Law and Health of Lille. The present invention relates to a micro-circuit support whose micro-circuit is easily programmable as well as a method for programming this micro-circuit. It finds more particularly its application in the field known as smart cards. In this case, the support is a credit card format card. The object of the invention is to make available to programmers, for various applications having to be portable, the working power provided by such supports. By portable character is meant the fact that the card, or more generally any medium of small size (a few centimeters) and of low weight (a few hundred grams), can by being inserted in a reader establish a transaction between a machine connected to this reader and the card. This transaction is then carried out according to a protocol and according to instructions which are contained in the card.

La principale difficulté rencontrée avec les cartes à micro-circuit vient de ce que le microprocesseur dont elles sont sont pourvues est associé à une mémoire de travail (de type RAM, statique ou dynamique) de faible capacité, quelques fois seulement 128 octets, et à des mémoires programmes (ROM: la plupart du temps de type
EPROM ou même EEPROM) elles aussi de très faible capacité, généralement limitée à quelques dizaines de kilooctets voire seulement à quelques kilooctets. De plus, les microprocesseurs des cartes sont généralement des microprocesseurs avec chacun un jeu d'instructions réduit. Ces microprocesseur sont même quelquefois assimilables à des micro-contrôleurs dont les bus d'échange ne sont pas en totalité accessibles depuis l'environnement extérieur du micro-circuit.La variété de conception de l'organe essentiel de traitement de ces microprocesseurs pour carte à micro-circuit a conduit à ce qu'il existe sur le marché un nombre important de microprocesseurs différents. On notera que ceci n'est pas le cas pour les gros microprocesseurs, avec jeu d'instructions important, dont la complexité a conduit à un nombre très limité de familles du fait du faible nombre des entreprises capables de les fabriquer.
The main difficulty encountered with micro-circuit cards comes from the fact that the microprocessor with which they are provided is associated with a working memory (of RAM, static or dynamic type) of low capacity, sometimes only 128 bytes, and with program memories (ROM: mostly type
EPROM or even EEPROM) also of very low capacity, generally limited to a few tens of kilobytes or even only a few kilobytes. In addition, the microprocessors of the cards are generally microprocessors each with a reduced set of instructions. These microprocessors are even sometimes comparable to microcontrollers whose exchange buses are not entirely accessible from the external environment of the micro-circuit. The variety of design of the essential processing unit of these microprocessors for card to micro-circuit has led to the fact that there are a large number of different microprocessors on the market. It should be noted that this is not the case for large microprocessors, with a large instruction set, the complexity of which has led to a very limited number of families due to the small number of companies capable of manufacturing them.

Dans le domaine des cartes à micro-circuit le programme représentatif de l'application à mettre en oeuvre est généralement stocké dans une mémoire morte non volatile contenue dans le micro-circuit. In the field of micro-circuit cards, the program representative of the application to be implemented is generally stored in a non-volatile read-only memory contained in the micro-circuit.

Cette diversité des microprocesseurs pour carte induit, pour le programmeur qui est désireux d'utiliser une carte à micro-circuit, la nécessité de connaître parfaitement le langage machine du microprocesseur utilisé. Ceci n'est pas possible si on veut pouvoir utiliser plusieurs types de microprocesseur différents. This diversity of microprocessors for card induces, for the programmer who is eager to use a micro-circuit card, the need to know perfectly the machine language of the microprocessor used. This is not possible if you want to be able to use several different types of microprocessor.

En outre, du fait du nombre limité d'instructions exécutables par les microprocesseur des cartes à micro-circuit, les langages de programmation dits évolués peuvent ne pas être complètement utilisables, il convient de les tester. Parmi ces langages évolués on fera référence, à titre d'exemple, aux langages dits C,
COBOL, PASCAL, BASIC, ADA, ainsi qu'à de nombreux autres également connus.
In addition, because of the limited number of instructions executable by the microprocessor of the micro-circuit cards, the so-called advanced programming languages may not be completely usable, they should be tested. Among these advanced languages, reference will be made, for example, to so-called C languages,
COBOL, PASCAL, BASIC, ADA, as well as many others also known.

On rappelle que la programmation par un programmeur, une personne humaine, d'un programme informatique est facilitée par l'utilisation de ces langages évolués. En effet ces langages sont à la fois proches du langage parlé (les instructions sont claires: par exemple WRITE, IF, GO TO...), et puissants parce que chaque instruction en langage évolué est ainsi exprimée en raccourci (instruction donc non exécutable telle quelle par le microprocesseur de la carte), et qu'elle peut être transformée, automatiquement par la suite, en une série d'instructions en un langage machine, lui, compréhensible et exécutable par le microprocesseur. It is recalled that the programming by a programmer, a human person, of a computer program is facilitated by the use of these advanced languages. Indeed, these languages are both close to spoken language (the instructions are clear: for example WRITE, IF, GO TO ...), and powerful because each instruction in advanced language is thus expressed as a shortcut (instruction therefore not executable as is by the card's microprocessor), and that it can be transformed, automatically thereafter, into a series of instructions in a machine language, which is understandable and executable by the microprocessor.

Cette transformation s'effectue en une opération ultérieure à la programmation et appelée COMPILATION. Si le langage n'est pas un langage évolué, mais uniquement un langage mnémonique dit assembleur, proche de celui du microprocesseur, le programme écrit en assembleur est transformé par une opération appelée ASSEMBLAGE en langage machine compréhensible par le microprocesseur.This transformation takes place in an operation subsequent to programming and called COMPILATION. If the language is not an advanced language, but only a mnemonic language known as assembler, close to that of the microprocessor, the program written in assembler is transformed by an operation called ASSEMBLAGE in machine language comprehensible by the microprocessor.

La COMPILATION consiste à transformer une instruction compacte en langage évolué, par exemple
WRITE, en une série d'instructions en langage machine, toujours les mêmes pour cette instruction, directement exécutables par le microprocesseur. Par exemple dans le cas de cette instruction WRITE, la transformation par
COMPILATION aura pour objet de produire des instructions par lesquelles le microprocesseur devra, successivement, charger, dans un registre d'échange avec la mémoire, la valeur à écrire, sélectionner par son adresse une cellule de la mémoire ou cette valeur doit être écrite, provoquer l'écriture, incrémenter son compteur d'instructions pour admettre une instruction suivante du programme, etc...Eventuellement le microprocesseur aura dû aller lire la valeur écrite et la comparer à la valeur à écrire pour valider ou recommencer cette écriture dans le cas où le microprocesseur doit exécuter un protocole sécurisé d'écriture. On comprend bien qu'il est plus facile pour le programmeur d'écrire "WRITE" que d'écrire, en langage machine, toutes les instructions du microprocesseur.
COMPILATION consists of transforming a compact instruction into advanced language, for example
WRITE, in a series of instructions in machine language, always the same for this instruction, directly executable by the microprocessor. For example in the case of this WRITE instruction, the transformation by
COMPILATION will aim to produce instructions by which the microprocessor must, successively, load, in an exchange register with the memory, the value to be written, select by its address a cell in the memory where this value must be written, cause writing, incrementing its instruction counter to admit a following program instruction, etc. The microprocessor may have had to go and read the written value and compare it to the value to be written to validate or start this writing again if the microprocessor must execute a secure writing protocol. We understand that it is easier for the programmer to write "WRITE" than to write, in machine language, all the instructions of the microprocessor.

Cependant, quand cela est nécessaire le programmeur écrit son programme dans un langage exécutable et compréhensible par le microprocesseur. Dans ce cas, plutôt que de lui imposer l'écriture fastidieuse des 1 et des 0 qui constituent, en langage machine, les seules expressions des instructions réellement exécutables par les microprocesseurs, on lui facilite la tâche en lui mettant à disposition un langage plus simple: le langage assembleur. Le langage assembleur est différent du langage évolué en ce sens qu'une instruction en langage assembleur est normalement transformée par l'opération d'ASSEMBLAGE en une seule instruction en langage machine, alors que la COMPILATION d'une instruction en langage évolué donne une série d'instructions en langage machine. However, when necessary, the programmer writes his program in an executable language understandable by the microprocessor. In this case, rather than imposing on him the tedious writing of the 1s and 0s which constitute, in machine language, the only expressions of the instructions actually executable by the microprocessors, it makes his task easier by providing him with a simpler language. : assembly language. Assembly language is different from advanced language in that an instruction in assembly language is normally transformed by the ASSEMBLY operation into a single instruction in machine language, while the COMPILATION of an instruction in advanced language gives a series instructions in machine language.

On pourra retrouver toutes ces notions relatives aux microprocesseurs dans le livre: "COMPRENDRE LES
MICROPROCESSEURS" de Daniel QUEYSSAC, éditions RADIO,
France 1983.
We can find all these notions relating to microprocessors in the book: "UNDERSTANDING
MICROPROCESSEURS "by Daniel QUEYSSAC, RADIO editions,
France 1983.

Dans le domaine des cartes à micro-circuit on est amené actuellement à demander aux programmeurs d'écrire leurs programmes en langage assembleur pour les raisons suivantes. Premièrement, pour ne pas occuper trop de place dans la mémoire programme de ces microprocesseurs, les programmes doivent être réduits à leur strict nécessaire. Ceci peut interdire l'emploi d'un langage évolué dont la traduction, au moment de la compilation, peut conduire à un nombre d'instructions plus important que ce qui est réellement nécessaire. Par exemple, ltopération de vérification d'écriture évoquée ci-dessus pourra être systématiquement produite par la
COMPILATION, alors que, quand elle n'est pas justifiée, dans certains cas, on peut économiser de la place en mémoire en ne l'écrivant pas.Ceci conduit néanmoins à une difficulté supplémentaire de programmation puisqu'il faut faire attention à cette contrainte de place limitée. Deuxièmement, la variété des microprocesseurs nécessiterait de devoir compiler les programmes avec des compilateurs variés, adaptés pour chaque langage à chaque type de microprocesseur. En pratique de tels compilateurs ne sont pas disponibles. Par ailleurs dans ceux existants on constate une non allocation dynamique des variables des fonctions. Ceci implique, au vue des dimensions de la mémoire de travail une impossibilité d'utiliser la puissance des langages évolués (découpage en fonction par exemple).
In the field of micro-circuit cards, we are currently having to ask programmers to write their programs in assembly language for the following reasons. First, in order not to occupy too much space in the program memory of these microprocessors, the programs must be reduced to their bare minimum. This can prohibit the use of an advanced language whose translation, at the time of compilation, can lead to a greater number of instructions than what is really necessary. For example, the write verification operation mentioned above could be systematically produced by the
COMPILATION, whereas, when it is not justified, in certain cases, one can save space in memory by not writing it. This nevertheless leads to an additional difficulty of programming since it is necessary to pay attention to this constraint limited space. Secondly, the variety of microprocessors would require having to compile the programs with various compilers, adapted for each language to each type of microprocessor. In practice, such compilers are not available. In addition, in existing ones, there is a dynamic non-allocation of the variables of the functions. This implies, in view of the dimensions of the working memory, an impossibility of using the power of advanced languages (division according to function for example).

La conséquence de cette situation est que les programmeurs de cartes à micro-circuit sont très rapidement intellectuellement liés au type de microprocesseur qu'ils connaissent bien. Donc il leur est peu facile de concevoir des nouvelles applications quand le microprocesseur qu'ils connaissent n'est pas apte à les exécuter, par exemple parce que son jeu d'instructions n'a pas été prévu pour cela. Il leur est alors très difficile de changer leurs habitudes et de devenir aussi habiles et expérimentés avec un nouveau microprocesseur qu'ils l'étaient avec un précédent microprocesseur. En outre, même la bonne connaissance du jeu d'instructions de plusieurs microprocesseurs ne peut pas donner à un programmeur une efficacité de travail qu'il aurait s'il écrivait ses programmes dans un langage évolué, plus puissant et aussi connu par beaucoup d'autres programmeurs. The consequence of this situation is that programmers of micro-circuit cards are very quickly intellectually linked to the type of microprocessor they know well. So it is not easy for them to design new applications when the microprocessor they know is not able to execute them, for example because its instruction set was not provided for that. It is therefore very difficult for them to change their habits and become as skilled and experienced with a new microprocessor as they were with a previous microprocessor. Furthermore, even a good knowledge of the instruction set of several microprocessors cannot give a programmer a work efficiency which he would have if he wrote his programs in an advanced language, more powerful and also known by many other programmers.

Ainsi si une application est écrite pour un microprocesseur donné, et si après cette écriture on décide d'utiliser un autre microprocesseur que celui pour lequel elle a été écrite et mise au point, on doit tout recommencer. Ceci est une perte de temps et d'argent. So if an application is written for a given microprocessor, and if after this writing we decide to use a different microprocessor than the one for which it was written and developed, we have to start all over again. This is a waste of time and money.

Pour résoudre ces problèmes, dans l'invention, on a organisé le travail du microprocesseur d'une façon différente. Premièrement on utilise un langage évolué de programmation de type connu. Deuxièmement on utilise un compilateur de ce langage évolué de programmation pour produire, à partir d'un programme d'application écrit dans ce langage évolué, un programme en un langage intermédiaire. Ce langage intermédiaire sera un standard pour tous les microprocesseurs possibles. Cependant les instructions de ce programme intermédiaire ne sont pas exécutables par aucun des microprocesseurs, pas plus que les instructions du programme en langage évolué. On munit alors, dans chaque carte, le micro-circuit d'un programme interpréteur de commande.Un tel programme interpréteur de commande est susceptible de produire une série d'instructions écrites dans le langage du microprocesseur de ce micro-circuit et donc directement exécutables par ce microprocesseur, pour une instruction reçue dans ce langage intermédiaire. Ce programme interpréteur n'est ni un programme de COMPILATION ni un programme d'ASSEMBLAGE. En effet, l'interpréteur produit les instructions exécutables par le microprocesseur au fur et à mesure qu'il reçoit des instructions en langage intermédiaire d'une part, mais surtout il ne produit une autre série d'instructions exécutables par ce microprocesseur que lorsque les précédentes instructions exécutables ont été exécutées. La production des instructions exécutables est donc faite en temps réel, au vol, au cours du déroulement du programme.Ces instructions directement exécutables n'existent donc dans le déroulement du programme que d'un manière éphémère, que lorsqu'elles sont exécutées. Elles ne sont pas stockées comme telles dans une mémoire du micro-circuit. To solve these problems, in the invention, the work of the microprocessor has been organized in a different way. First, we use an advanced programming language of known type. Second, we use a compiler of this advanced programming language to produce, from an application program written in this advanced language, a program in an intermediate language. This intermediate language will be a standard for all possible microprocessors. However, the instructions of this intermediate program cannot be executed by any of the microprocessors, any more than the instructions of the program in advanced language. The micro-circuit is then provided in each card with a command interpreter program. Such a command interpreter program is capable of producing a series of instructions written in the language of the microprocessor of this micro-circuit and therefore directly executable by this microprocessor, for an instruction received in this intermediate language. This interpreter program is neither a COMPILATION program nor an ASSEMBLY program. Indeed, the interpreter produces the instructions executable by the microprocessor as it receives instructions in intermediate language on the one hand, but above all it produces another series of instructions executable by this microprocessor only when the previous executable instructions have been executed. The production of executable instructions is therefore done in real time, on the fly, during the course of the program. These directly executable instructions therefore only exist in the course of the program in a fleeting manner, when they are executed. They are not stored as such in a memory of the micro-circuit.

La mise oeuvre de l'invention nécessite donc l'écriture, une fois pour toutes, d'un programme de compilation intermédiaire pour compiler des instructions, écrites en un langage évolué, en des instructions en langage intermédiaire. Il y a cependant autant de programmes de compilation intermédiaires qu'il y a de langages évolués. Actuellement le nombre des langages évolués couramment utilisés est de l'ordre d'une dizaine: c'est faible. Elle nécessite encore, mais là aussi une fois pour toute, l'écriture d'un programme interpréteur de commande pour le microprocesseur. Il y a cependant également autant de programmes interpréteurs qu'il y a de microprocesseurs différents. On peut dénombrer actuellement une dizaine de microprocesseurs de sorte que seuls une dizaine de programmes interpréteurs doivent être écrits. The implementation of the invention therefore requires the writing, once and for all, of an intermediate compilation program for compiling instructions, written in an advanced language, into instructions in intermediate language. There are however as many intermediate compilation programs as there are advanced languages. Currently the number of advanced languages commonly used is around ten: it is low. It still requires, but here too once and for all, the writing of a command interpreter program for the microprocessor. However, there are also as many interpreter programs as there are different microprocessors. We can currently count ten microprocessors so that only a dozen interpreter programs must be written.

L'intérêt de l'invention est alors que n'importe quelle application, écrite en un langage évolué est alors exécutable sur n'importe quel microprocesseur. The advantage of the invention is then that any application, written in an advanced language can then be executed on any microprocessor.

Sans l'invention c'est environ une dizaine de programmes exécutables qu'il aurait fallu écrire si on avait voulu être sûr de couvrir toutes les possibilités (pour 10 microprocesseurs). Ceci aurait été très long puisque l'écriture et la mise au point d'un programme directement exécutable est longue. Par ailleurs la place occupée en mémoire est plus faible avec l'invention. A titre d'exemple un programme de 1200 lignes écrit en langage C, compilé avec le compilateur C de BYTE CRAFT donne en langage exécutable par un microprocesseur un volume d'instructions égal à 8 kilooctets, ou 8 KO. Avec la compilation intermédiaire de l'invention, le programme intermédiaire correspondant occupe 4 KO.Without the invention, around ten executable programs would have had to be written if we wanted to be sure of covering all the possibilities (for 10 microprocessors). This would have been very long since it takes a long time to write and develop a directly executable program. Furthermore, the place occupied in memory is lower with the invention. By way of example, a 1200 line program written in C language, compiled with the BYTE CRAFT C compiler, gives, in language executable by a microprocessor, a volume of instructions equal to 8 kilobytes, or 8 KB. With the intermediate compilation of the invention, the corresponding intermediate program occupies 4 KB.

Sachant que le programme interpréteur occupe 2,1 KO en mémoire du micro-circuit, on a pu faire une économie de place d'environ 2 KO. Cette économie a été faite par ailleurs sans avoir à surveiller la suppression de partie d'instructions qui pouvaient, dans certains cas s'avérer inutiles. De plus, le programme essai qui sert de référence a d'abord été écrit en C-Byte (car plus contraignant d'un point de vue syntaxique, avec au maximum deux octets de déclaration). Ce langage C-Byte n'est pas particulièrement adapté aux systèmes portables. Ceci implique qu'en écrivant directement avec le compilateur de l'invention le gain serait encore supérieur.Knowing that the interpreter program occupies 2.1 KB in memory of the micro-circuit, we were able to save approximately 2 KB of space. This saving was made moreover without having to supervise the deletion of part of instructions which could, in certain cases prove useless. In addition, the test program which serves as a reference was first written in C-Byte (because it is more syntactically restrictive, with a maximum of two bytes of declaration). This C-Byte language is not particularly suitable for portable systems. This implies that by writing directly with the compiler of the invention the gain would be even greater.

L'invention a donc pour objet un support portable à micro-circuit dont le micro-circuit est muni d'un microprocesseur, d'une mémoire programme (ROM), d'une mémoire de données (EEPROM), et de moyens de faire exécuter par le microprocesseur un programme contenu dans la mémoire programme, caractérisé en ce que la mémoire programme comporte une zone dans laquelle est stocké un programme interpréteur correspondant au microprocesseur, pour faire exécuter par ce microprocesseur, une à une, les instructions d'un programme intermédiaire d'application chargé dans la mémoire programme ou la mémoire de données, après les avoir individuellement fait interpréter par le programme interpréteur, afin par exemple que ce programme intermédiaire d'application agisse sur des données contenues dans la mémoire de données. The subject of the invention is therefore a portable micro-circuit support the micro-circuit of which is provided with a microprocessor, a program memory (ROM), a data memory (EEPROM), and means for making execute by the microprocessor a program contained in the program memory, characterized in that the program memory comprises an area in which is stored an interpreter program corresponding to the microprocessor, to cause the microprocessor to execute, one by one, the instructions of a program application intermediary loaded in the program memory or the data memory, after having them individually interpreted by the interpreter program, in order for example for this intermediate application program to act on data contained in the data memory.

L'invention sera mieux comprise à la lecture de la description qui suit et à l'examen des figures qui l'accompagnent. Celles-ci ne sont données qu'à titre indicatif et nullement limitatif de l'invention. The invention will be better understood on reading the description which follows and on examining the figures which accompany it. These are given for information only and in no way limit the invention.

Notamment la référence faite à un langage de programmation particulier doit se comprendre comme transposable aux autres langages de programmation disponibles. De même la citation d'un microprocesseur particulier ne peut être considérée comme une application de l'invention à ce seul microprocesseur.In particular, the reference made to a particular programming language must be understood as transposable to the other programming languages available. Similarly, the citation of a particular microprocessor cannot be considered as an application of the invention to this single microprocessor.

A titre d'exemple on joint ici, en un langage compréhensible par le microprocesseur de type ST8 de
SGS-THOMSON Microelectronics, un programme interpréteur susceptible d'interpréter des instructions compilées en langage intermédiaire d'un programme d'application écrit dans un langage évolué par exemple C. Le compilateur de ce langage doit produire des instructions dont la liste est donnée à la dernière page de cette annexe. Cette liste renseigne donc sur le niveau d'achèvement qui doit être conduit avec le compilateur. Pour en faciliter la compréhension, le programme +r & est écrit en assembleur. Il doit cependant être assemblé selon le programme d'assemblage du microprocesseur décrit avant d'être exécutable.
By way of example, we enclose here, in a language understandable by the ST8 type microprocessor of
SGS-THOMSON Microelectronics, an interpreter program capable of interpreting instructions compiled in intermediate language from an application program written in an advanced language for example C. The compiler of this language must produce instructions whose list is given to the last page of this appendix. This list therefore provides information on the level of completion which must be carried out with the compiler. To make it easier to understand, the + r & program is written in assembler. It must however be assembled according to the microprocessor assembly program described before being executable.

Les figures montrent: - Planche 1/8, figure 1 : un exemple de réalisation de l'invention; - Planche 2/8, figure 2 : les étapes nécessaires pour mettre en oeuvre le procédé de l'invention; - Planche 3/8, figure 3 : une représentation détaillée d'un mode de fonctionnement de l'invention. The figures show: - Plate 1/8, Figure 1: an embodiment of the invention; - Plate 2/8, Figure 2: the steps necessary to implement the method of the invention; - Plate 3/8, Figure 3: a detailed representation of an operating mode of the invention.

- Les planches 4/8 à 8/8 montrent, sous forme de court listage, des micro-instructions de l'interpréteur de l'invention. - Boards 4/8 to 8/8 show, in the form of a short listing, micro-instructions of the interpreter of the invention.

La figure 1 montre un exemple de réalisation de l'invention. Un support portable 1, ici sous forme de carte à puce est prévu pour être inséré dans un lecteur 2 en relation avec une machine 3. Dans un exemple de type connu la machine 3 est un distributeur automatique de billets de banque. N'importe quelle autre application est cependant envisageable. Dans cet exemple la machine 3 est même munie d'un clavier 4 sur lequel peut intervenir un utilisateur, le titulaire de la carte 1, pour choisir de faire exécuter une option ou une autre d'un programme d'utilisation de la carte. Le programme d'utilisation de la carte a été introduit dans une partie 5 d'une mémoire morte 6.Normalement l'utilisateur de la carte n'a pas les moyens de modifier le programme contenu dans la mémoire- 6. Ce programme y a été introduit par l'émetteur de la carte: la banque qui gère par ailleurs la machine 3. Ce programme a été écrit et mis au point par un programmeur de cette banque. Ce programme est destiné à permettre à l'utilisateur de la carte d'effectuer des opérations diverses: visualisation de compte, retrait d'argent liquide, passation d'ordre de virement, d'ordres d'achat en bourse ou autres. Figure 1 shows an exemplary embodiment of the invention. A portable support 1, here in the form of a smart card, is designed to be inserted into a reader 2 in connection with a machine 3. In an example of a known type, the machine 3 is an automatic banknote dispenser. Any other application is however possible. In this example, the machine 3 is even provided with a keyboard 4 on which a user, the card holder 1, can intervene, to choose to execute an option or another of a program for using the card. The program for using the card has been introduced into part 5 of a ROM 6. Normally the user of the card does not have the means to modify the program contained in the memory. was introduced by the card issuer: the bank that also manages the machine 3. This program was written and developed by a programmer from this bank. This program is intended to allow the card user to carry out various operations: account viewing, withdrawal of cash, placing of transfer orders, purchase orders on the stock market or others.

La carte 1 comporte un micro-circuit électronique comportant un microprocesseur 7, la mémoire programme 6, une mémoire de données 8, et une mémoire de travail 9. The card 1 comprises an electronic micro-circuit comprising a microprocessor 7, the program memory 6, a data memory 8, and a working memory 9.

La mémoire 9 est une mémoire à accès aléatoire de type statique ou dynamique. Elle est ici volatile. Le micro-circuit comporte encore un bus de données 10 et un bus d'adresses 11 pour permettre à ces mémoires et à ce microprocesseur d'échanger des informations, des données, entre eux et aussi avec un organe d'entrée-sortie 12. L'organe d'entree-sortie 12 est capable de communiquer avec une interface correspondante dans le lecteur 2. The memory 9 is a random access memory of static or dynamic type. Here it is volatile. The micro-circuit also comprises a data bus 10 and an address bus 11 to allow these memories and this microprocessor to exchange information, data, between them and also with an input-output member 12. The input-output device 12 is capable of communicating with a corresponding interface in the reader 2.

La mémoire de travail 9 est nécessaire dans l'invention, et le microprocesseur doit être conçu pour pouvoir exécuter des instructions qui lui sont présentées depuis cette mémoire. Certains microprocesseurs néanmoins sont aptes à exécuter des instructions (directement compréhensibles par ces microprocesseurs) et mémorisées telles quelles dans des mémoires mortes associées à ces microprocesseurs. Ceci n'est pas le cas dans l'invention où, comme on le verra plus loin, les instructions concernant le programme d'application ne sont pas mémorisées sous une forme directement exécutable par le microprocesseur (bien que pour des raisons de mémorisation elles soient elles aussi composées en code binaire de 1 et de O). The working memory 9 is necessary in the invention, and the microprocessor must be designed to be able to execute instructions which are presented to it from this memory. Some microprocessors, however, are capable of executing instructions (directly understandable by these microprocessors) and stored as such in read-only memories associated with these microprocessors. This is not the case in the invention where, as will be seen below, the instructions concerning the application program are not memorized in a form directly executable by the microprocessor (although for memorization reasons they are also composed in binary code of 1 and O).

Les instructions du programme d'application, dans l'invention, doivent être interprétées, au moyen d'un programme d'interprétation contenu (sous une forme directement exécutable par le microprocesseur 7) par exemple dans une autre partie 13 de la mémoire morte 6. The instructions of the application program, in the invention, must be interpreted, by means of an interpretation program contained (in a form directly executable by the microprocessor 7) for example in another part 13 of the read-only memory 6 .

La mémoire 6 n'est pas nécessairement physiquement partagée en deux parties distinctes. Des adresses de différentes cellules de cette mémoire peuvent à elles seules permettre de distinguer le contenu de la mémoire 6: programme P représentant l'application, ou programme
I représentant le programme interpréteur directement exécutable tel quel par le microprocesseur 7. De préférence, disposant du microprocesseur 7, on va faire interpréter par ce microprocesseur 7 les instructions du programme d'application. Il serait néanmoins possible de faire interpréter ces instructions par un autre microprocesseur, moins puissant mais physiquement voisin du microprocesseur 7 dans le micro-circuit de la carte 1. L'utilisation du même microprocesseur conduit à simplifier l'architecture du système comme on le verra plus loin.
The memory 6 is not necessarily physically divided into two distinct parts. Addresses of different cells of this memory can alone make it possible to distinguish the content of memory 6: program P representing the application, or program
I representing the interpreter program directly executable as it is by the microprocessor 7. Preferably, having the microprocessor 7, we will have this microprocessor 7 interpret the instructions of the application program. It would nevertheless be possible to have these instructions interpreted by another microprocessor, less powerful but physically close to microprocessor 7 in the micro-circuit of card 1. The use of the same microprocessor leads to simplifying the architecture of the system as we will see further.

La figure 2 montre les étapes nécessaires pour mettre en oeuvre le procédé de l'invention. FIG. 2 shows the steps necessary to implement the method of the invention.

Premièrement, dans une phase 14 on écrit le programme de l'application comme si les problèmes cités relatifs aux cartes à micro-circuit étaient inexistants. On sait écrire de tels programmes: ils ne nécessitent que de connaître le fonctionnement de la machine 3 et les fonctions qu'on veut proposer aux utilisateurs. Dans un exemple de mise en oeuvre de l'invention le langage de programmation est pour l'essentiel le langage C, avec les options de programmation suivantes. En ce qui concerne la déclaration des variables, les types de données suivants sont autorisés: mode caractère "char" sur un octet, mode entier int sur deux octets, tableaux de caractères ou d'entiers à une dimension (avec un indice de 0 à n), et existence de pointeurs sur les caractères ou les entiers. En ce qui concerne les spécifications de classes de mémoires, on respecte celles déjà existantes, et on introduit les classes de stockages permettant d'accéder aux mémoires EPROM et/ou
EEPROM. En ce qui concerne les expressions: toutes les expressions du langage C sont autorisées: notamment celles avec des opérateurs unaires et binaires, avec des opérateurs logiques et de décalage, et les expressions conditionnelles. En ce qui concerne les déclarations de fonction, elles sont toutes permises, avec passages de paramètres et allocation dynamique des variables locales
Toutes les structures de contrôle sont également acceptées: notamment les IF, WHILE, FOR, SWITCH etc....
Firstly, in phase 14, the application program is written as if the problems mentioned relating to micro-circuit cards were non-existent. We know how to write such programs: they only need to know how the machine 3 works and what functions we want to offer users. In an exemplary implementation of the invention, the programming language is essentially the C language, with the following programming options. With regard to the declaration of variables, the following data types are authorized: character mode "char" on one byte, int integer mode on two bytes, arrays of characters or integers with one dimension (with an index of 0 to n), and existence of pointers on characters or integers. Regarding the specifications of memory classes, we respect those already existing, and we introduce the storage classes allowing access to EPROM memories and / or
EEPROM. Regarding expressions: all expressions of the C language are allowed: in particular those with unary and binary operators, with logical and shift operators, and conditional expressions. Regarding function declarations, they are all allowed, with parameter passing and dynamic allocation of local variables
All control structures are also accepted: in particular IF, WHILE, FOR, SWITCH etc ...

Par ailleurs le langage C comporte déjà des fonctions externes facilitant l'interface système-matériel pour gérer les aspects matériels de la carte, notamment la gestion de son organe d'entrée-sortie 12. Furthermore, the C language already includes external functions facilitating the system-hardware interface for managing the hardware aspects of the card, in particular the management of its input-output member 12.

Puis dans une étape 15 on compile le programme 14. Then in a step 15 we compile the program 14.

Le programme compilateur qui permet la production du programme d'application sous sa forme intermédiaire est un programme compilateur avec pour principales caractéristiques les caractéristiques suivantes. Un compilateur est un programme qui prend en entrée un fichier source de type texte et qui correspond au programme que l'on veut compiler, et qui produit en sortie un fichier en un langage différent. Dans l'état de la technique le langage différent est le langage machine (directement exécutable par le micro-processeur) ou éventuellement de l'assembleur. Dans l'invention, c'est un langage intermédiaire. Le fichier programme source est constitué de déclarations de variables, de pragmas, et de fonctions.Les variables sont repérées par leur identificateur, les pragmas permettent d'affecter à certaines variables des adresses en mémoire et de spécifier des aspects liés au processeur lui-même.The compiler program which allows the production of the application program in its intermediate form is a compiler program with the following main characteristics. A compiler is a program which takes as input a source file of type text and which corresponds to the program which one wants to compile, and which produces as output a file in a different language. In the state of the art, the different language is the machine language (directly executable by the microprocessor) or possibly the assembler. In the invention, it is an intermediate language. The source program file is made up of declarations of variables, pragmas, and functions. Variables are identified by their identifier, pragmas are used to assign addresses to certain variables and to specify aspects related to the processor itself. .

Par exemple, la ROM ou 1'EEPROM sont à telle ou telle adresse.For example, the ROM or the EEPROM are at such and such an address.

On veut, par exemple, compiler un fichier source où on va trouver une instruction
I = 14
Dans un premier temps on trouve dans ce fichier source la déclaration de la variable I. A cette variable I on attache ainsi un type de variable. Ce type est par exemple entier. Après la déclaration de variable on trouvera l'instruction
I = 14; dans le programme ou dans une fonction. Après avoir vu la déclaration, cette séquence est correcte puisqu'on trouve un nom de variable I, un signe d'affectation = , une valeur ou une notation d'entier 14 et un point virgule ;. Le point virgule veut dire que l'instruction est terminée. Cela veut dire que derrière le "14" il n'y a pas un "+1" ou un "+2". C'est donc la fin de l'instruction. Après avoir analysé l'instruction et sa syntaxe, on va avec le programme compilateur produire une expression en langage intermédiaire.Pour cette instruction I = 14 , il faut empiler, mettre dans une pile, l'adresse de la variable I. On remarque qu'on connait l'adresse de la variable I parce que quand on a exploré les déclarations, à chaque fois qu'il avait une nouvelle déclaration on allouait une adresse particulière à chaque variable. Après avoir empilé l'adresse de I, on empile au-dessus la valeur 14. Puis on va prendre la valeur qui est en haut de la pile (14) et l'affecter à l'adresse qui est contenue dans la pile juste en-dessous de cette valeur (14) du haut de la pile. Dans le cas présent, cette expression de langage intermédiaire comporte donc les trois instructions empiler l'adresse de I, empiler la valeur (14) et mettre la valeur du sommet de la pile à l'adresse contenue dans le sous-sommet de la pile.
We want, for example, to compile a source file where we will find an instruction
I = 14
Firstly, we find in this source file the declaration of variable I. To this variable I we thus attach a type of variable. This type is for example integer. After the declaration of variable we will find the instruction
I = 14; in the program or in a function. After seeing the declaration, this sequence is correct since we find a variable name I, an assignment sign =, a value or a notation of integer 14 and a semicolon;. The semicolon means that the instruction is finished. This means that behind the "14" there is not a "+1" or a "+2". It is therefore the end of the instruction. After having analyzed the instruction and its syntax, we will use the compiler program to produce an expression in intermediate language. For this instruction I = 14, we must stack, put in a stack, the address of the variable I. We notice that 'we know the address of variable I because when we explored the declarations, each time it had a new declaration we allocated a particular address to each variable. After having stacked the address of I, we stack the value above 14. Then we will take the value which is at the top of the stack (14) and assign it to the address which is contained in the stack just by - below this value (14) at the top of the stack. In this case, this intermediate language expression therefore comprises the three instructions stack the address of I, stack the value (14) and put the value from the top of the stack to the address contained in the sub-top of the stack .

Pour le compilateur de l'invention, on s'est attaché à produire environ 70 instructions élémentaires (69 exactement) du type de chacune des trois précédentes. On produit donc 70 instructions qui doivent être interprétées. Ce nombre, de type empirique, et induits par les considérations suivantes. Si le compilateur fait beaucoup de chose, la complexité des instructions différentes à exécuter par l'interpréteur va diminuer pour atteindre le langage machine. La place occupée en mémoire par l'interpréteur va diminuer (un peu). Le bilan global sera moins intéressant. Dans le cas contraire c'est le programme interpréteur lui-même qui occupera une place prohibitive dans la mémoire. La puissance du langage intermédiaire est ainsi déterminée empiriquement. C'est le fait d'expériences réussies et d'échecs.Si on a un langage intermédiaire qui est très puissant, on a automatiquement plus d'instructions dans le langage intermédiaire. Si on a plus d'instructions dans le langage intermédiaire on a automatiquement un interpréteur qui devient important. Puissant veut dire pour le compilateur d'être à même de gérer 3 ou 4 niveau de piles, les additionner, les multiplier. Il pourrait faire beaucoup plus de choses, On aurait alors un compilateur et un langage intermédiaire beaucoup plus puissant, mais il faudrait un interpréteur beaucoup plus long, parce qu'il y aurait beaucoup plus d'instructions qu'il faudrait traduire en langage du processeur réel. For the compiler of the invention, we set out to produce about 70 elementary instructions (69 exactly) of the type of each of the previous three. We therefore produce 70 instructions which must be interpreted. This number, of empirical type, and induced by the following considerations. If the compiler does a lot, the complexity of the different instructions to be executed by the interpreter will decrease to reach the machine language. The memory space occupied by the interpreter will decrease (a little). The overall result will be less interesting. Otherwise, the interpreter program itself will occupy a prohibitive place in memory. The power of intermediate language is thus determined empirically. It is the result of successful experiences and failures. If we have an intermediate language which is very powerful, we automatically have more instructions in the intermediate language. If we have more instructions in the intermediate language we automatically have an interpreter which becomes important. Powerful means for the compiler to be able to manage 3 or 4 levels of stacks, add them up, multiply them. It could do a lot more things. We would then have a much more powerful compiler and intermediate language, but we would need a much longer interpreter, because there would be many more instructions that we would have to translate into processor language. real.

Donc le.gain en place mémoire que l'on aurait obtenu en essayant de trouver un langage intermédiaire, on le perdrait parce qu'on aurait un interpréteur trop long.So the memory gain that we would have obtained by trying to find an intermediate language, we would lose it because we would have an interpreter too long.

Un langage intermédiaire très puissant traiterait directement les instructions en langage évolué. Si l'interpréteur fait tout, il va être gros et occuper de la place en mémoire
Une fois que le programme intermédiaire est créé, on le stocke dans la partie 5 de la mémoire 6.
A very powerful intermediate language would directly deal with instructions in advanced language. If the interpreter does everything, it will be large and take up memory space
Once the intermediate program is created, it is stored in part 5 of memory 6.

Puis, ou au préalable, on écrit en une étape 17 un programme interpréteur de commande, spécifique du microprocesseur utilisé dans la carte. Ce programme est pour le microprocesseur de l'exemple de l'invention celui montré dans l'annexe A. Il a les caractéristiques suivantes. C'est un programme qui est écrit dans le langage machine du microprocesseur (bien qu'il soit en annexe sous sa forme assembleur). En entrée, l'interpréteur prend les expressions produites par le compilateur et les transforme en des instructions directement compréhensible par le microprocesseur. Son algorithme principal est simple. On prend la première expression trouvée, on l'exécute, et le pointeur de programme pointe sur l'expression suivante.Pour I = 14 on avait généré trois instructions : 1) empiler l'adresse de I ; 2) empiler la valeur 14 ; 3) affecter le sommet de pile à l'adresse contenue dans le sous-sommet de pile. Then, or beforehand, a command interpreter program, specific for the microprocessor used in the card, is written in a step 17. This program is for the microprocessor of the example of the invention that shown in Annex A. It has the following characteristics. It is a program which is written in the machine language of the microprocessor (although it is annexed in its assembler form). As input, the interpreter takes the expressions produced by the compiler and transforms them into instructions directly understandable by the microprocessor. Its main algorithm is simple. We take the first expression found, we execute it, and the program pointer points to the following expression. For I = 14 we had generated three instructions: 1) stack the address of I; 2) stack the value 14; 3) assign the stack top to the address contained in the stack sub-top.

L'interpréteur prend ici la première instruction qui s'appelle "EMPILER l'adresse de I". Empiler l'adresse de I consiste à mettre l'adresse de I sur une pile. L'instruction empilage de I est codée en langage machine sur trois octets. Le premier octet est le code opération, qui correspond à EMPILER. Le programme de l'interpréteur est tel que lorsqu'on trouve un "EMPILER", juste derrière, les deux octets qui suivent représentent l'adresse de l'endroit où on doit aller chercher ce qu'on doit empiler, et on sait donc qu'il faut mettre l'adresse sur la pile. Pour le microprocesseur décrit cela donne une instruction appelée DJSR EMPILER. Son code, qu'on retrouvera dans l'annexe A, est
PUSH BASE DS.
The interpreter here takes the first instruction which is called "STACK address of I". Stacking the address of I involves putting the address of I on a stack. The stacking instruction of I is coded in machine language on three bytes. The first byte is the operation code, which corresponds to STACK. The program of the interpreter is such that when we find a "STACK", just behind, the two bytes which follow represent the address of the place where we have to go to find what we have to stack, and we therefore know you have to put the address on the stack. For the microprocessor described this gives an instruction called DJSR EMPILER. His code, which can be found in Appendix A, is
PUSH BASE DS.

Il comporte trois instructions en langage machine : les instructions ici écrites en assembleur
move b7,b4
jsr empiler et
jmp décodage
Le programme interpréteur de commande, directement exécutable par le microprocesseur 7, est ensuite chargé en une étape 18 dans la partie 13 de la mémoire 6.
It includes three instructions in machine language: the instructions written here in assembler
move b7, b4
jsr stack and
jmp decoding
The command interpreter program, directly executable by the microprocessor 7, is then loaded in a step 18 in the part 13 of the memory 6.

Pour le déroulement de l'application, le fonctionnement de l'invention est le suivant. Chaque instruction du programme intermédiaire (du programme stocké dans la partie 5 de la mémoire 6) est considéré comme une macro-instruction qui est décodée en une étape 19 à l'aide du programme interpréteur. Cette macro-instruction est équivalente à une suite de micro-instructions directement exécutables par le microprocesseur. Les micro-instructions de cette suite sont exécutées à la suite les unes des autres jusqu'à la dernière de la suite. Dès que la dernière de la suite est exécutée, par une étape 21, le déroulement du programme retourne au décodage d'une macro-instruction suivante du programme intermédiaire. For the progress of the application, the operation of the invention is as follows. Each instruction of the intermediate program (of the program stored in part 5 of the memory 6) is considered to be a macro-instruction which is decoded in a step 19 using the interpreter program. This macro-instruction is equivalent to a series of micro-instructions directly executable by the microprocessor. The micro-instructions of this sequence are executed one after the other until the last of the sequence. As soon as the last of the sequence is executed, by a step 21, the progress of the program returns to the decoding of a next macro-instruction of the intermediate program.

La figure 3 permet de comprendre le fonctionnement de l'invention. Elle reprend les mêmes éléments que ceux déjà vus jusqu'ici. On a en plus fait figurer un compteur de programme 22 susceptible de permettre de traiter les unes après les autres les instructions IM du programme intermédiaire contenu dans la mémoire 5. Une telle instruction de ce programme intermédiaire est par exemple codée sur trois octets: un octet contenant un code instruction et deux octets contenant une adresse d'un opérande. Dans un premier temps le code instruction chargé en mémoire RAM 9 est envoyé à un décodeur d'instruction 23 du microprocesseur 7. L'interpréteur reconnaît le code instruction IM, en utilisant 1'ALU 24 et le décodeur d'instructions 23, à cause de la présence de signaux de contrôle relatifs à ce stade de l'exécution.Cette instruction est reconnue comme étant une instruction en langage intermédiaire. Dans ces conditions cette instruction décodée provoque le chargement dans la mémoire 9 de la série 27 des micro-instructions IP à IP + 4 dont la séquence a correspondu au décodage de l'instruction IM. Ce chargement est provoqué par l'envoi de l'instruction IM au décodeur 23, à 1'ALU 24 au sortir du décodeur 23, et dans une table d'adressage 241 au sortir de 1'ALU 24. La table 241 peut aussi être remplacée par un petit sous programme qui effectuerait le même travail. Le programme interpréteur comporte ainsi un certain nombre (69) de séries de micro-instructions, par exemple les séries 27 à 30. Au moyen d'un autre compteur d'instructions, on fait exécuter successivement les instructions IP à IP + 4.Ces instructions agissent sur l'opérande 25 contenu dans la mémoire de données 8 et dont l'adresse a été décodée par le registre d'adresse 26. Ces instructions
IP à IP + 4 passent chacune à leur tour par le décodeur d'instruction 23 avant d'être envoyées à l'unité 24 où elles agissent sur l'opérande 25. On rappelle que les instructions IP à IP + 4 sont directement exécutables par l'unité 24. La fin d'une série de micro-instructions est marquée par la présence, dans chacune de ces séries d'instructions du programme interpréteur, d'une micro-instruction de fin ayant pour objet de provoquer des signaux de contrôle nécessaires pour passer à l'instruction en langage intermédiaire suivante. Cette pile de micro-instructions peut être facilement prise en compte par un microprocesseur 7 intégrant une gestion de pile. Elle peut aussi être simulée par les microprocesseurs n'ayant pas une telle gestion de pile directe. Cette fonction de pile est de préférence contenue dans le système d'exploitation du microprocesseur 7.
Figure 3 allows to understand the operation of the invention. It uses the same elements as those already seen so far. In addition, there is a program counter 22 capable of processing the IM instructions of the intermediate program contained in the memory one after the other. Such an instruction of this intermediate program is for example coded on three bytes: one byte containing an instruction code and two bytes containing an address of an operand. Firstly, the instruction code loaded in RAM memory 9 is sent to an instruction decoder 23 of the microprocessor 7. The interpreter recognizes the instruction code IM, using the ALU 24 and the instruction decoder 23, because the presence of control signals relating to this stage of execution. This instruction is recognized as being an instruction in intermediate language. Under these conditions, this decoded instruction causes the loading into memory 9 of the series 27 of micro-instructions IP to IP + 4, the sequence of which corresponded to the decoding of the instruction IM. This loading is caused by the sending of the instruction IM to the decoder 23, to the ALU 24 at the end of the decoder 23, and in an address table 241 at the end of the ALU 24. The table 241 can also be replaced by a small subroutine that would do the same job. The interpreter program thus comprises a certain number (69) of series of micro-instructions, for example the series 27 to 30. By means of another instruction counter, the instructions IP to IP + 4 are executed successively. instructions act on the operand 25 contained in the data memory 8 and whose address has been decoded by the address register 26. These instructions
IP to IP + 4 each pass in turn through the instruction decoder 23 before being sent to unit 24 where they act on the operand 25. It is recalled that the instructions IP to IP + 4 are directly executable by unit 24. The end of a series of micro-instructions is marked by the presence, in each of these series of instructions of the interpreter program, of an end micro-instruction whose purpose is to cause control signals necessary to proceed to the next intermediate language instruction. This stack of micro-instructions can be easily taken into account by a microprocessor 7 integrating a stack management. It can also be simulated by microprocessors that do not have such direct stack management. This stack function is preferably contained in the operating system of the microprocessor 7.

Pour la réalisation des algorithmes cryptographiques, en particulier dans le cas des applications bancaires, l'utilisation de l'assembleur pourra être préférable car elle permet d'obtenir des temps d'exécution courts. Ceci n'interdit pas d'utiliser l'invention, il suffit dans le déroulement du programme de faire appel à des sous-programmes écrits alors en langage machine (après ASSEMBLAGE). Ces sous programmes peuvent aussi être chargés dans la partie 13 de la mémoire 6.  For the implementation of cryptographic algorithms, in particular in the case of banking applications, the use of the assembler may be preferable because it allows short execution times to be obtained. This does not prohibit the use of the invention, it suffices in the course of the program to call on subroutines then written in machine language (after ASSEMBLY). These subroutines can also be loaded into part 13 of memory 6.

Claims (5)

REVENDICATIONS 1 - Support portable à micro-circuit dont le micro-circuit est muni d'un microprocesseur, d'une mémoire programme (ROM), d'une mémoire de données (EEPROM), et de moyens de faire exécuter par le microprocesseur un programme contenu dans la mémoire programme, caractérisé en ce que la mémoire programme comporte une zone dans laquelle est stocké un programme interpréteur correspondant au microprocesseur, pour faire exécuter par ce microprocesseur, une à une, les instructions d'un programme intermédiaire d'application chargé dans la mémoire programme ou la mémoire de données, après les avoir individuellement fait interpréter par le programme interpréteur, afin par exemple que ce programme intermédiaire d'application agisse sur des données contenues dans la mémoire de données. 1 - Portable micro-circuit support, the micro-circuit of which is provided with a microprocessor, a program memory (ROM), a data memory (EEPROM), and means for making the microprocessor execute a program contained in the program memory, characterized in that the program memory comprises an area in which is stored an interpreter program corresponding to the microprocessor, to have the microprocessor execute, one by one, the instructions of an intermediate application program loaded in the program memory or the data memory, after having them individually interpreted by the interpreter program, so for example that this intermediate application program acts on data contained in the data memory. 2 - Support selon la revendication 1, caractérisé en ce que le programme interpréteur est un programme interpréteur susceptible de transformer un programme intermédiaire d'application compilé à partir d'un programme écrit dans un quelconque des langages de programmation suivant: 2 - Support according to claim 1, characterized in that the interpreter program is an interpreter program capable of transforming an intermediate application program compiled from a program written in any of the following programming languages: langage C C language langage PASCAL PASCAL language langage COBOL COBOL language langage BASIC BASIC language langage ADA ADA language langage FORTRAN FORTRAN language 3 - Support selon la revendication 1 ou la revendication 2, caractérisé en ce que la mémoire programme comporte en outre une zone contenant le système d'exploitation du microprocesseur. 3 - Support according to claim 1 or claim 2, characterized in that the program memory further comprises an area containing the operating system of the microprocessor. 4 - Support selon l'une quelconque des revendications 1 à 3, caractérisé en ce que le micro-circuit comporte des moyens pour élaborer temporairement les instructions mises en oeuvre par le microprocesseur et une mémoire de travail pour les stocker pendant leur existence éphémère. 4 - Support according to any one of claims 1 to 3, characterized in that the micro-circuit comprises means for temporarily developing the instructions implemented by the microprocessor and a working memory for storing them during their ephemeral existence. 5 - Procédé d'utilisation d'un support à micro-circuit dont le micro-circuit est muni d'un microprocesseur, d'une mémoire programme (ROM), d'une mémoire de données (EEPROM), et de moyens (RAM) de faire exécuter par le microprocesseur un programme contenu dans la mémoire programme ou la mémoire de données, caractérisé en ce qu'il comporte les étapes suivantes: 5 - Method of using a micro-circuit support, the micro-circuit of which is provided with a microprocessor, a program memory (ROM), a data memory (EEPROM), and means (RAM ) cause the microprocessor to execute a program contained in the program memory or the data memory, characterized in that it comprises the following steps: on os charge un programme interpréteur de commandes dans la mémoire programme, we load a command interpreter program into the program memory, - on charge un programme intermédiaire d'application dans la mémoire de données, - an intermediate application program is loaded into the data memory, - on fait interpréter au moins une instruction du programme intermédiaire par l'interpréteur de commande, - at least one instruction in the intermediate program is interpreted by the command interpreter, - on fait exécuter par le microprocesseur cette instruction intermédiaire interprétée, - this interpreted intermediate instruction is executed by the microprocessor, - et on agit de même pour une instruction suivante du programme intermédiaire.  - and the same is done for a subsequent instruction in the intermediate program.
FR9011818A 1990-09-25 1990-09-25 PORTABLE MEDIUM WITH EASILY PROGRAMMABLE MICRO-CIRCUIT AND METHOD FOR PROGRAMMING THIS MICRO-CIRCUIT. Expired - Lifetime FR2667171B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9011818A FR2667171B1 (en) 1990-09-25 1990-09-25 PORTABLE MEDIUM WITH EASILY PROGRAMMABLE MICRO-CIRCUIT AND METHOD FOR PROGRAMMING THIS MICRO-CIRCUIT.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9011818A FR2667171B1 (en) 1990-09-25 1990-09-25 PORTABLE MEDIUM WITH EASILY PROGRAMMABLE MICRO-CIRCUIT AND METHOD FOR PROGRAMMING THIS MICRO-CIRCUIT.

Publications (2)

Publication Number Publication Date
FR2667171A1 true FR2667171A1 (en) 1992-03-27
FR2667171B1 FR2667171B1 (en) 1994-08-26

Family

ID=9400635

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9011818A Expired - Lifetime FR2667171B1 (en) 1990-09-25 1990-09-25 PORTABLE MEDIUM WITH EASILY PROGRAMMABLE MICRO-CIRCUIT AND METHOD FOR PROGRAMMING THIS MICRO-CIRCUIT.

Country Status (1)

Country Link
FR (1) FR2667171B1 (en)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995004328A1 (en) * 1993-07-30 1995-02-09 Intellect Australia Pty. Ltd. Device and method for ic cards
EP0706692A1 (en) * 1992-10-26 1996-04-17 Intellect Australia Pty. Ltd. Host and user transaction system
WO1996025724A1 (en) * 1995-02-17 1996-08-22 Europay International S.A. Integrated circuit controlled transaction management system
WO1996036051A1 (en) * 1995-05-09 1996-11-14 Smartmove (Nz) Limited Card interface
WO1996038825A1 (en) * 1995-05-30 1996-12-05 Syseca S.A. Protected smart card
WO1996041260A1 (en) * 1995-06-07 1996-12-19 Alliedsignal Inc. Reconfigurable algorithmic networks for aircraft data management
WO1997001147A2 (en) * 1995-06-23 1997-01-09 International Business Machines Corporation Method of simplifying communication with chip cards
EP0794519A1 (en) * 1996-03-09 1997-09-10 Wolfgang Salge IC-card
WO1997050063A2 (en) * 1996-06-27 1997-12-31 Europay International N.V. Portable, secure transaction system for programmable, intelligent devices
WO1998009257A1 (en) * 1996-08-30 1998-03-05 Gemplus S.C.A. A system and method for loading applications onto a smart card
EP0831435A2 (en) * 1996-09-03 1998-03-25 Hitachi, Ltd. Program writable IC card and method thereof
WO1998019237A1 (en) * 1996-10-25 1998-05-07 Schlumberger Systemes Using a high level programming language with a microcontroller
FR2757970A1 (en) * 1996-12-30 1998-07-03 Gemplus Card Int METHOD FOR LOADING A USER PROGRAM INTO A CHIP MEDIUM
EP0866591A1 (en) * 1997-02-26 1998-09-23 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
WO1999038131A1 (en) * 1998-01-22 1999-07-29 Mondex International Limited Codelets
US5963980A (en) * 1993-12-07 1999-10-05 Gemplus Card International Microprocessor-based memory card that limits memory accesses by application programs and method of operation
US6145739A (en) * 1993-10-26 2000-11-14 Intellect Australia Pty Ltd. System and method for performing transactions and an intelligent device therefor
US6157966A (en) * 1997-06-30 2000-12-05 Schlumberger Malco, Inc. System and method for an ISO7816 complaint smart card to become master over a terminal
FR2795837A1 (en) * 1999-06-30 2001-01-05 Bull Cp8 Method of comparing timing of data processing in corresponding devices by measuring progress by accumulating meaningful value of time of execution of corresponding instruction
FR2805058A1 (en) * 2000-02-14 2001-08-17 Giesecke & Devrient Gmbh COMPUTER STRUCTURE FOR A PORTABLE DATA MEDIUM
US6308270B1 (en) 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
US6357665B1 (en) 1998-01-22 2002-03-19 Mondex International Limited Configuration of IC card
US6564995B1 (en) 1997-09-19 2003-05-20 Schlumberger Malco, Inc. Smart card application-selection
US6591229B1 (en) 1998-10-09 2003-07-08 Schlumberger Industries, Sa Metrology device with programmable smart card
US6696930B1 (en) 2000-04-10 2004-02-24 Teledyne Technologies Incorporated System and method for specification of trigger logic conditions
FR2846770A1 (en) * 2002-11-04 2004-05-07 Oberthur Card Syst Sa Microcircuit card for computer system, has card manager to communicate local code of local object reference obtained from previous reference upon reception of message having logical identifier of computer object
WO2005048203A1 (en) * 2003-11-12 2005-05-26 Legic Identsystems Ag Method for writing data and applications into identification media
US6915189B2 (en) 2002-10-17 2005-07-05 Teledyne Technologies Incorporated Aircraft avionics maintenance diagnostics data download transmission system
EP1053535B1 (en) * 1998-02-06 2006-07-19 Mondex International Limited Configuration of ic card
US7669055B2 (en) 1997-02-21 2010-02-23 Multos Limited Key transformation unit for a tamper resistant module
EP1164478A3 (en) * 1992-12-22 2011-12-07 Oracle America, Inc. Method and apparatus for resolving data references in generated code
FR3105853A1 (en) * 2019-12-31 2021-07-02 Proton World International N.V. Embedded system
US11720358B2 (en) 2019-12-31 2023-08-08 Proton World International N.V. Embedded system

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6575372B1 (en) 1997-02-21 2003-06-10 Mondex International Limited Secure multi-application IC card system having selective loading and deleting capability
US6488211B1 (en) 1997-05-15 2002-12-03 Mondex International Limited System and method for flexibly loading in IC card
US6328217B1 (en) 1997-05-15 2001-12-11 Mondex International Limited Integrated circuit card with application history list
US6220510B1 (en) 1997-05-15 2001-04-24 Mondex International Limited Multi-application IC card with delegation feature
US6385723B1 (en) 1997-05-15 2002-05-07 Mondex International Limited Key transformation unit for an IC card
US6736325B1 (en) 1998-01-22 2004-05-18 Mondex International Limited Codelets
US6742120B1 (en) 1998-02-03 2004-05-25 Mondex International Limited System and method for controlling access to computer code in an IC card

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3145080A1 (en) * 1981-08-20 1983-05-19 Siegfried 7562 Gernsbach Schwarz Freely programmable open-loop, closed-loop control
US4443865A (en) * 1981-10-26 1984-04-17 Allen-Bradley Co. Processor module for a programmable controller
DE3518139A1 (en) * 1984-05-22 1985-11-28 Sharp K.K., Osaka TEX COMPILING DEVICE
US4618925A (en) * 1981-05-22 1986-10-21 Data General Corporation Digital data processing system capable of executing a plurality of internal language dialects
US4823257A (en) * 1986-08-08 1989-04-18 Hitachi, Ltd. Information processing system having smart memories
EP0331754A1 (en) * 1987-09-02 1989-09-13 Fanuc Ltd. Cnc program execution apparatus

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4618925A (en) * 1981-05-22 1986-10-21 Data General Corporation Digital data processing system capable of executing a plurality of internal language dialects
DE3145080A1 (en) * 1981-08-20 1983-05-19 Siegfried 7562 Gernsbach Schwarz Freely programmable open-loop, closed-loop control
US4443865A (en) * 1981-10-26 1984-04-17 Allen-Bradley Co. Processor module for a programmable controller
DE3518139A1 (en) * 1984-05-22 1985-11-28 Sharp K.K., Osaka TEX COMPILING DEVICE
US4823257A (en) * 1986-08-08 1989-04-18 Hitachi, Ltd. Information processing system having smart memories
EP0331754A1 (en) * 1987-09-02 1989-09-13 Fanuc Ltd. Cnc program execution apparatus

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
COMMUNICATIONS OF THE ACM vol. 26, no. 9, septembre 1983, pages 654-660; A.S. TANNENBAUM et al.: "A practical tool kit for making portable compilers" *
MICROPROCESSING & MICROPROGRAMMING vol. 21, nos. 1-5, août 1987, pages 275-282, Amsterdam, NL; K. WADA et al.: "Intermediate code for the sequential prolog machine PEK" *

Cited By (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0706692A1 (en) * 1992-10-26 1996-04-17 Intellect Australia Pty. Ltd. Host and user transaction system
US5682027A (en) * 1992-10-26 1997-10-28 Intellect Australia Pty Ltd. System and method for performing transactions and a portable intelligent device therefore
EP0706692A4 (en) * 1992-10-26 1999-09-15 Intellect Australia Pty Ltd Host and user transaction system
US6091817A (en) * 1992-10-26 2000-07-18 Intellect Australia Pty Ltd. Host and user transaction system
US6095412A (en) * 1992-10-26 2000-08-01 Intellect Australia Pty Ltd. Host and user transaction system
EP1164478A3 (en) * 1992-12-22 2011-12-07 Oracle America, Inc. Method and apparatus for resolving data references in generated code
WO1995004328A1 (en) * 1993-07-30 1995-02-09 Intellect Australia Pty. Ltd. Device and method for ic cards
US6145739A (en) * 1993-10-26 2000-11-14 Intellect Australia Pty Ltd. System and method for performing transactions and an intelligent device therefor
US5963980A (en) * 1993-12-07 1999-10-05 Gemplus Card International Microprocessor-based memory card that limits memory accesses by application programs and method of operation
AU689550B2 (en) * 1995-02-17 1998-04-02 Europay International S.A. Integrated circuit controlled transaction management system
WO1996025724A1 (en) * 1995-02-17 1996-08-22 Europay International S.A. Integrated circuit controlled transaction management system
US6254288B1 (en) 1995-02-17 2001-07-03 Guido Heyns Integrated circuit controlled transaction management system
US6213392B1 (en) 1995-05-09 2001-04-10 Smartmove, Ltd. Card interface for interfacing a host application program to data storage cards
WO1996036051A1 (en) * 1995-05-09 1996-11-14 Smartmove (Nz) Limited Card interface
AU687312B2 (en) * 1995-05-09 1998-02-19 Smartmove (Nz) Limited Card interface
FR2734934A1 (en) * 1995-05-30 1996-12-06 Syseca SECURE INTELLIGENT CHIP CARD
WO1996038825A1 (en) * 1995-05-30 1996-12-05 Syseca S.A. Protected smart card
WO1996041260A1 (en) * 1995-06-07 1996-12-19 Alliedsignal Inc. Reconfigurable algorithmic networks for aircraft data management
WO1997001147A3 (en) * 1995-06-23 1997-02-06 Ibm Method of simplifying communication with chip cards
WO1997001147A2 (en) * 1995-06-23 1997-01-09 International Business Machines Corporation Method of simplifying communication with chip cards
WO1997033258A1 (en) * 1996-03-09 1997-09-12 Wolfgang Salge Chip card
EP0794519A1 (en) * 1996-03-09 1997-09-10 Wolfgang Salge IC-card
WO1997050063A3 (en) * 1996-06-27 1998-03-26 Europay Int Nv Portable, secure transaction system for programmable, intelligent devices
WO1997050063A2 (en) * 1996-06-27 1997-12-31 Europay International N.V. Portable, secure transaction system for programmable, intelligent devices
WO1998009257A1 (en) * 1996-08-30 1998-03-05 Gemplus S.C.A. A system and method for loading applications onto a smart card
US6732272B1 (en) 1996-09-03 2004-05-04 Hitachi, Ltd. Program writable integrated circuit card and method therefore
US7278029B2 (en) 1996-09-03 2007-10-02 Hitachi, Ltd. Program writable IC card and method thereof
EP0831435A3 (en) * 1996-09-03 2000-06-21 Hitachi, Ltd. Program writable IC card and method thereof
EP0831435A2 (en) * 1996-09-03 1998-03-25 Hitachi, Ltd. Program writable IC card and method thereof
US8881119B2 (en) 1996-10-25 2014-11-04 Gemalto Sa Computer program product containing instructions for providing a processor the capability of executing an application derived from a compiled form
WO1998019237A1 (en) * 1996-10-25 1998-05-07 Schlumberger Systemes Using a high level programming language with a microcontroller
AU722463B2 (en) * 1996-10-25 2000-08-03 Gemalto Sa Using a high level programming language with a microcontroller
US8726247B2 (en) 1996-10-25 2014-05-13 Gemalto Sa Computer program product containing instructions for providing a processor the capability of executing an application derived from a compiled form
US8881118B2 (en) 1996-10-25 2014-11-04 Gemalto Sa Computer program product containing instructions for providing a processor the capability of executing an application derived from a compiled form
US9400668B2 (en) 1996-10-25 2016-07-26 Gemalto Sa Computer program product containing instructions for providing a processor the capability of executing an application derived from a compiled form
US7117485B2 (en) 1996-10-25 2006-10-03 Axalto Sa Using a high level programming language with a microcontroller
JP2003141488A (en) * 1996-10-25 2003-05-16 Schlumberger System Microcontroller using high class programming language
FR2757970A1 (en) * 1996-12-30 1998-07-03 Gemplus Card Int METHOD FOR LOADING A USER PROGRAM INTO A CHIP MEDIUM
AU733631B2 (en) * 1996-12-30 2001-05-17 Gemplus S.C.A. Method for loading an application programme in a chip card
WO1998029803A1 (en) * 1996-12-30 1998-07-09 Gemplus S.C.A. Method for loading an application programme in a chip card
US7730311B2 (en) 1997-02-21 2010-06-01 Multos Limited Key transformation unit for a tamper resistant module
US7669055B2 (en) 1997-02-21 2010-02-23 Multos Limited Key transformation unit for a tamper resistant module
US7734923B2 (en) 1997-02-21 2010-06-08 Multos Limited Key transformation unit for a tamper resistant module
US7730312B2 (en) 1997-02-21 2010-06-01 Multos Limted Tamper resistant module certification authority
US7730310B2 (en) 1997-02-21 2010-06-01 Multos Limited Key transformation unit for a tamper resistant module
US7707408B2 (en) 1997-02-21 2010-04-27 Multos Limited Key transformation unit for a tamper resistant module
US7702908B2 (en) 1997-02-21 2010-04-20 Multos Limited Tamper resistant module certification authority
US7689826B2 (en) 1997-02-21 2010-03-30 Multos Limited Flexibly loading a tamper resistant module
US6795923B1 (en) 1997-02-26 2004-09-21 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
EP0866591A1 (en) * 1997-02-26 1998-09-23 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
US5935249A (en) * 1997-02-26 1999-08-10 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
US6157966A (en) * 1997-06-30 2000-12-05 Schlumberger Malco, Inc. System and method for an ISO7816 complaint smart card to become master over a terminal
US6564995B1 (en) 1997-09-19 2003-05-20 Schlumberger Malco, Inc. Smart card application-selection
US6357665B1 (en) 1998-01-22 2002-03-19 Mondex International Limited Configuration of IC card
WO1999038131A1 (en) * 1998-01-22 1999-07-29 Mondex International Limited Codelets
EP1053535B1 (en) * 1998-02-06 2006-07-19 Mondex International Limited Configuration of ic card
US6308270B1 (en) 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
US6591229B1 (en) 1998-10-09 2003-07-08 Schlumberger Industries, Sa Metrology device with programmable smart card
FR2795837A1 (en) * 1999-06-30 2001-01-05 Bull Cp8 Method of comparing timing of data processing in corresponding devices by measuring progress by accumulating meaningful value of time of execution of corresponding instruction
FR2805058A1 (en) * 2000-02-14 2001-08-17 Giesecke & Devrient Gmbh COMPUTER STRUCTURE FOR A PORTABLE DATA MEDIUM
US6696930B1 (en) 2000-04-10 2004-02-24 Teledyne Technologies Incorporated System and method for specification of trigger logic conditions
US6915189B2 (en) 2002-10-17 2005-07-05 Teledyne Technologies Incorporated Aircraft avionics maintenance diagnostics data download transmission system
FR2846770A1 (en) * 2002-11-04 2004-05-07 Oberthur Card Syst Sa Microcircuit card for computer system, has card manager to communicate local code of local object reference obtained from previous reference upon reception of message having logical identifier of computer object
US8554795B2 (en) 2003-11-12 2013-10-08 Legic Identsystems Ag Method for writing data and applications into identification media
WO2005048203A1 (en) * 2003-11-12 2005-05-26 Legic Identsystems Ag Method for writing data and applications into identification media
FR3105853A1 (en) * 2019-12-31 2021-07-02 Proton World International N.V. Embedded system
US11714643B2 (en) 2019-12-31 2023-08-01 Proton World International N.V. Embedded system
US11720358B2 (en) 2019-12-31 2023-08-08 Proton World International N.V. Embedded system

Also Published As

Publication number Publication date
FR2667171B1 (en) 1994-08-26

Similar Documents

Publication Publication Date Title
FR2667171A1 (en) Portable support with easily programmable microcircuit and method of programming this microcircuit
EP0479655B1 (en) Integrated circuit for a microprocessor-card with multiple programms in programmable memory
CA2382003C (en) Management protocol, method for verifying and transforming a downloaded programme fragment and corresponding systems
FR2612316A1 (en) INTEGRATED CIRCUIT BOARD HAVING INTERNAL ERROR INTELLIGENCE CAPABILITY
FR2666671A1 (en) METHOD FOR MANAGING AN APPLICATION PROGRAM LOADED IN A MICROCIRCUIT MEDIUM.
FR2766942A1 (en) CHIP CARD READER WITH MICROCONTROLLER AND SECURITY COMPONENT
EP0565389A1 (en) IC-card personalization process
EP2786317A1 (en) Writing data in a non-volatile memory of a smart card
EP1960934B1 (en) Method for making secure execution of an intermediate language software code in a portable appliance
FR2686171A1 (en) MEMORY MEMORY CARD FOR MICROCOMPUTER WITH FACILITIES FOR EXECUTING INTERNAL PROGRAMS.
WO2003010666A1 (en) Method for compressing a code interpreted by semantic analysis
FR2967275A1 (en) METHOD, COMPUTER PROGRAM AND DEVICE FOR SECURING INTERMEDIATE PROGRAMMING CODE FOR ITS EXECUTION BY A VIRTUAL MACHINE
CZ423598A3 (en) Portable safe transaction system for programmable intelligent devices
FR2871590A1 (en) METHOD FOR LOADING OBJECT-ORIENTED INTERMEDIATE LANGUAGE SOFTWARE IN A PORTABLE DEVICE.
FR2823330A1 (en) Loading of application code data into a programmable computer chip memory or similar device, uses data designed to be managed in two modes the first of which is provisory
FR2795835A1 (en) METHOD FOR VERIFYING CODE TRANSFORMERS FOR AN ON-BOARD SYSTEM, IN PARTICULAR ON A CHIP CARD
EP1141903B1 (en) Device and method for initialising an applicative programme of an integrated circuit card
EP1012710B1 (en) Method for loading an application programme in a chip card
FR2997205A1 (en) METHOD FOR MANAGING IDENTIFIERS IN AN INTEGRATED CIRCUIT BOARD AND CORRESPONDING INTEGRATED CIRCUIT BOARD
WO2020254761A1 (en) Service application system for payment terminals
EP0081873B1 (en) Data processing system allowing use of the same erasable and programmable memory for both reading and writing instructions and data
WO1999000774A9 (en) Security module comprising means generating links between main files and auxiliary files
Akram et al. An Introduction to Java Card Programming
FR2936327A1 (en) METHOD FOR DOWNLOADING A .NET PROGRAM AND DEVICE THEREFOR
FR2808100A1 (en) Connection interface for two smart card readers and connection system using the interface, comprises smart card and reader connections, and control switch connecting alternative readers to smart card