(57)【特許請求の範囲】
【請求項１】
ＣＰＵとメモリとを内蔵し、メモリ内に格納されたアプリケーションプログラムをＣＰＵによって実行させることにより、種々の処理を行うＩＣカードにおいて、
内蔵ＣＰＵとは異なる別なＣＰＵ用のマシン語で記述され、当該別なＣＰＵを示すＣＰＵコードが付加されたアプリケーションプログラムを外部から取り込み、このアプリケーションプログラムを前記ＣＰＵコードとともに書換可能なメモリへ格納する機能を有し、
前記別なＣＰＵ用のマシン語で記述されたアプリケーションプログラムを、前記内蔵ＣＰＵによって実行させるためのエミュレーションプログラムを内蔵するか、またはこのエミュレーションプログラムを外部から取り込み書換可能なメモリへ格納する機能を有し、
メモリ内の特定のアプリケーションプログラムを選択する指示を外部から取り込み、選択されたアプリケーションプログラムについて格納されているＣＰＵコードに基づいて、当該選択されたアプリケーションプログラムの実行に必要なエミュレーションプログラムを選択し、選択されたアプリケーションプログラムを、選択されたエミュレーションプログラムを利用して、前記内蔵ＣＰＵに実行させる機能を有することを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、
外部から取り込んだアプリケーションプログラムに、当該プログラムが占有すべき第１のアドレス空間を示すアドレス値が付加されており、かつ、前記第１のアドレス空間が利用可能ではない場合に、前記アプリケーションプログラムを、利用可能な第２のアドレス空間内に格納するようにし、前記アプリケーションプログラムの実行時には、前記第１のアドレス空間から前記第２のアドレス空間へのアドレス変換を行う機能を有することを特徴とするＩＣカード。
【請求項３】
請求項１に記載のＩＣカードにおいて、
外部から取り込んだアプリケーションプログラムに、当該プログラムが使用すべき第１のアドレス空間を示すアドレス値が付加されており、かつ、前記第１のアドレス空間が利用可能ではない場合に、前記アプリケーションプログラムの実行時には、利用可能な第２のアドレス空間を確保し、前記第１のアドレス空間から前記第２のアドレス空間へのアドレス変換を行い、前記第２のアドレス空間を使用してプログラムを実行する機能を有することを特徴とするＩＣカード。
【請求項４】
請求項２または３に記載のＩＣカードにおいて、
アプリケーションプログラムの実行時に利用されるエミュレーションプログラムによってアドレス変換が行われるようにしたことを特徴とするＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＩＣカードに関し、特に、ＣＰＵとメモリとを有し、メモリ内に格納されたアプリケーションプログラムをＣＰＵによって実行させることにより、種々の処理を行うＩＣカードに関する。
【０００２】
【従来の技術】
キャッシュカードやクレジットカードとして利用されてきた磁気カードに代わって、光カードやＩＣカードが普及し始めている。特に、ＣＰＵを内蔵したＩＣカードは、高度なセキュリティを確保することができるため、高額な商取引にも利用することができる利点を有する。
【０００３】
現在、一般に利用されているＣＰＵを有するＩＣカードには、メモリとして、ＲＯＭ，ＥＥＰＲＯＭ，ＲＡＭが内蔵されている。通常、ＲＯＭには、ＣＰＵに実行させるべき基本的なプログラムが格納され、ＥＥＰＲＯＭには、ユーザデータや種々のアプリケーションプログラムが格納され、ＲＡＭはＣＰＵの作業領域として利用される。ＥＥＰＲＯＭは書換可能なメモリであるため、ここにユーザごとに必要なデータやアプリケーションプログラムを格納することができる。ＩＣカードに内蔵されたＣＰＵは、当該ＣＰＵ用に記述されたマシン語のプログラムであれば、直接実行することができる。したがって、アプリケーションプログラムをマシン語で記述する場合には、各ＩＣカードに内蔵されているＣＰＵに適したマシン語コードで記述する必要がある。
【０００４】
ＩＣカードにデータやプログラムを書き込んだり、これらを読み出したりする際には、いわゆるリーダライタ装置と呼ばれる外部装置が用いられる。この外部装置とＩＣカードとの間では、物理的な伝送線を介してまたは非接触な伝送路を介して、相互にデータやプログラムの伝送が行われる。通常、外部装置からＩＣカードへの情報伝送は、コマンドという形式で与えられ、種々の指示やデータは、このコマンドの中の一情報としてＩＣカード側へと伝えられる。これに対して、ＩＣカードから外部装置への情報伝送は、レスポンスという形式で与えられ、処理結果やデータは、このレスポンスの中の一情報として外部装置側へと伝えられる。
【０００５】
【発明が解決しようとする課題】
前述したように、一般的なＩＣカードに、マシン語で記述されたアプリケーションプログラムを実行させる場合、内蔵ＣＰＵに適したマシン語コードで記述しておく必要がある。ところが、通常、供給元が異なると、内蔵ＣＰＵに適したマシン語コードも異なることが多く、たとえば、Ａ社製のＣＰＵ用に記述されたマシン語コードは、Ｂ社製のＣＰＵではそのままでは実行することができない。また、同一のＣＰＵを内蔵したＩＣカードであっても、ＲＯＭ内の基本プログラムが異なれば、マシン語プログラムの互換性が失われる場合もある。ＩＣカードには高度なセキュリティが要求されるため、ＲＯＭ内の基本プログラムによって、メモリ上の特定のアドレス空間に対するアクセスが制限される場合が多いが、この制限対象となるアドレス空間が共通していないと、同一のＣＰＵを内蔵したＩＣカードであっても、同一のマシン語プログラムを実行することができないためである。
【０００６】
このような事情から、従来は、個々のＩＣカードごとにそれぞれ専用のマシン語アプリケーションプログラムが開発されており、これらのプログラムは、当該ＩＣカードについてのみ利用可能であった。しかしながら、ＩＣカードの普及とともに、多数の供給元から多種類のＩＣカードが供給されるようになってきており、ソフトウエア資源を有効に活用する上では、種々のＩＣカード用に開発されたアプリケーションプログラムを、同一のＩＣカ−ド上で利用できる環境が望まれている。
【０００７】
そこで本発明は、異なる複数種類のＩＣカード用に記述されたマシン語アプリケーションプログラムを実行することが可能な汎用性をもったＩＣカードを提供することを目的とする。
【０００８】
【課題を解決するための手段】
(1)   本発明の第１の態様は、ＣＰＵとメモリとを内蔵し、メモリ内に格納されたアプリケーションプログラムをＣＰＵによって実行させることにより、種々の処理を行うＩＣカードにおいて、
内蔵ＣＰＵとは異なる別なＣＰＵ用のマシン語で記述され、当該別なＣＰＵを示すＣＰＵコードが付加されたアプリケーションプログラムを外部から取り込み、このアプリケーションプログラムをＣＰＵコードとともに書換可能なメモリへ格納する機能を有し、
別なＣＰＵ用のマシン語で記述されたアプリケーションプログラムを、内蔵ＣＰＵによって実行させるためのエミュレーションプログラムを内蔵するか、またはこのエミュレーションプログラムを外部から取り込み書換可能なメモリへ格納する機能を有し、
メモリ内の特定のアプリケーションプログラムを選択する指示を外部から取り込み、選択されたアプリケーションプログラムについて格納されているＣＰＵコードに基づいて、当該選択されたアプリケーションプログラムの実行に必要なエミュレーションプログラムを選択し、選択されたアプリケーションプログラムを、選択されたエミュレーションプログラムを利用して、内蔵ＣＰＵに実行させる機能を有するようにしたものである。
【００１０】
(2)   本発明の第２の態様は、上述の第１の態様に係るＩＣカードにおいて、
外部から取り込んだアプリケーションプログラムに、当該プログラムが占有すべき第１のアドレス空間を示すアドレス値が付加されており、かつ、この第１のアドレス空間が利用可能ではない場合に、アプリケーションプログラムを、利用可能な第２のアドレス空間内に格納するようにし、アプリケーションプログラムの実行時には、第１のアドレス空間から第２のアドレス空間へのアドレス変換を行うようにしたものである。
【００１１】
(3)   本発明の第３の態様は、上述の第１の態様に係るＩＣカードにおいて、
外部から取り込んだアプリケーションプログラムに、当該プログラムが使用すべき第１のアドレス空間を示すアドレス値が付加されており、かつ、この第１のアドレス空間が利用可能ではない場合に、アプリケーションプログラムの実行時には、利用可能な第２のアドレス空間を確保し、第１のアドレス空間から第２のアドレス空間へのアドレス変換を行い、第２のアドレス空間を使用してプログラムを実行するようにしたものである。
【００１２】
(4)   本発明の第４の態様は、上述の第２または第３の態様に係るＩＣカードにおいて、
アプリケーションプログラムの実行時に利用されるエミュレーションプログラムによってアドレス変換が行われるようにしたものである。
【００１３】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。図１は、一般的なＩＣカード１０と、外部装置（リーダライタ装置）２０との間で、情報の伝送を行っている状態を示すブロック図である。この例では、ＩＣカード１０は、種々の演算処理機能をもったＣＰＵ１１と、外部装置２０に対する情報の送受を行うＩ／Ｏインターフェイス１２と、ＲＯＭ１３，ＥＥＰＲＯＭ１４，ＲＡＭ１５なるメモリとを備えている。ＲＯＭ１３は書換不能な不揮発性メモリであり、ＣＰＵ１１は、このＲＯＭ１３内に格納されている基本プログラムに基づいて所定の処理を実行する。ＥＥＰＲＯＭ１４は、書換可能な不揮発性メモリであり、ユーザデータや種々のアプリケーションプログラムが格納される。ＥＥＰＲＯＭ１４内に格納されたアプリケーションプログラムが、マシン語のコードで記述されたプログラムであった場合には、このプログラムはＣＰＵ１１によって直接実行されることになる。また、ＣＰＵに依存しない高級言語で記述されたプログラムであった場合には、ＣＰＵ１１は、このプログラムを、ＲＯＭ１３などに用意された解釈実行用プログラム（インタープリタプログラム）を介して実行することになる。ＲＡＭ１５は、ＣＰＵ１１が種々の処理を実行する際の作業領域として利用される書換可能な揮発性メモリである。
【００１４】
ＩＣカード１０と外部装置２０とは、物理的な信号線による接続、赤外線による接続、電磁気を利用した非接触型接続、などの方法によって互いに接続され、情報の送受が行われる。外部装置２０からＩＣカード１０へは、コマンドという形式で情報が送信される。送信されたこのコマンドは、Ｉ／Ｏインターフェイス１２を介してＣＰＵ１１に与えられる。逆に、ＩＣカード１０から外部装置２０へは、与えられたコマンドに対するレスポンスという形式で情報が送信される。このレスポンスは、ＣＰＵ１１からＩ／Ｏインターフェイス１２を介して、外部装置２０へと送信される。
【００１５】
本発明に係るＩＣカードの特徴は、異なる複数種類のＩＣカード用に記述されたマシン語アプリケーションプログラムを実行できる点にある。図２は、本発明に係るＩＣカードのメモリ内の状態を示すブロック図である。図示の例では、ＥＥＰＲＯＭ１４内に、複数の異なるアプリケーションプログラムａ，ｂ，ｃが格納されている。このように、ＥＥＰＲＯＭ１４内にアプリケーションプログラムを格納するには、外部装置２０からＩＣカード１０へプログラムロードコマンドを与えればよい。図示の例の場合、外部装置２０からＩＣカード１０に対して、プログラムロードコマンドを３回繰り返して与えることにより、３種類のアプリケーションプログラムａ，ｂ，ｃがＥＥＰＲＯＭ１４内に取り込まれたことになる。
【００１６】
このように、外部装置２０側からプログラムロードコマンドを与えることにより、ＥＥＰＲＯＭ１４内に、任意のアプリケーションプログラムを取り込むことが可能である。ＩＣカード１０に内蔵されたＣＰＵ１１は、こうしてＥＥＰＲＯＭ１４内に取り込まれたアプリケーションプログラムを実行する機能を有するが、どのようなアプリケーションプログラムでも実行可能というわけではない。すなわち、マシン語で記述されているアプリケーションプログラムの場合は、このＣＰＵ１１用のマシン語コードで記述されていなければ実行することができず、高級言語で記述されているアプリケーションプログラムの場合は、この高級言語を「ＣＰＵ１１が解釈実行できるマシン語コード」に変換するインタープリタプログラムがＩＣカード内に用意されていなければ実行することができない。
【００１７】
ここでは、説明の便宜上、ＣＰＵ１１がＡ社製のＣＰＵであり、ＥＥＰＲＯＭ１４内に取り込まれた３種類のアプリケーションプログラムａ，ｂ，ｃが、それぞれＡ社製のＣＰＵ，Ｂ社製のＣＰＵ，Ｃ社製のＣＰＵに適したマシン語コードで記述されていたものとしよう。この場合、Ａ社製のＣＰＵ１１は、アプリケーションプログラムａを直接実行することは可能であるが、アプリケーションプログラムｂ，ｃを直接実行することはできない。そこで、本発明に係るＩＣカードでは、ＲＯＭ１３内に、各アプリケーションプログラムを統括制御するためのＯＳ（Operation System）プログラムとともに、エミュレーションプログラムＢ，Ｃを用意している。ここで、エミュレーションプログラムＢは、Ａ社製のＣＰＵ１１に、疑似的にＢ社製のＣＰＵとしての動作を行わせるためのプログラムであり、エミュレーションプログラムＣは、Ａ社製のＣＰＵ１１に、疑似的にＣ社製のＣＰＵとしての動作を行わせるためのプログラムである。Ａ社製のＣＰＵ１１は、これらエミュレーションプログラムＢ，Ｃを介して、アプリケーションプログラムｂ，ｃを実行することが可能になる。
【００１８】
たとえば、アプリケーションプログラムｂを実行する際には、このアプリケーションプログラムｂに含まれるＢ社製のＣＰＵ用のマシン語コードが、エミュレーションプログラムＢによってＡ社製のＣＰＵ用のマシン語コードに変換され、ＣＰＵ１１によって実行されることになる。
【００１９】
結局、本発明に係るＩＣカードによれば、内蔵ＣＰＵとは異なる別なＣＰＵ用のマシン語で記述されたアプリケーションプログラムを外部から取り込み、ＥＥＰＲＯＭ１４内に格納し、このアプリケーションプログラムを、ＲＯＭ１３内に用意されたエミュレーションプログラムを利用して、内蔵ＣＰＵ１１によって実行することが可能になる。なお、図２に示す例では、エミュレーションプログラムＢ，Ｃを書換不能な不揮発性メモリであるＲＯＭ１３内に用意しているが、これらを書換可能な不揮発性メモリであるＥＥＰＲＯＭ１４内に取り込んで利用するようにしてもかまわない。このように、エミュレーションプログラムを外部から取り込むようにすれば、必要に応じて所望のエミュレーションプログラムをＩＣカード内に用意することができるようになる。
【００２０】
なお、本実施形態では、外部から取り込むアプリケーションプログラムに、当該プログラムに対応するＣＰＵを示すＣＰＵコードを付加するようにし、アプリケーションプログラムとともにこのＣＰＵコードをＥＥＰＲＯＭ１４内に格納するようにしている。たとえば、図２に示す例の場合、アプリケーションプログラムａ，ｂ，ｃには、それぞれＡ社製，Ｂ社製，Ｃ社製のＣＰＵに対応したプログラムであることを示すＣＰＵコードが付加されていることになる。このようなＣＰＵコードを付加しておけば、これらのコードに基づいて、必要なエミュレーションプログラムを選択することが可能になる。
【００２１】
図３は、この実施形態に係るＩＣカードにおけるアプリケーションプログラムの実行処理手順を示す流れ図である。図２に示すように、ＥＥＰＲＯＭ１４内に３種類のアプリケーションプログラムａ，ｂ，ｃが格納されていた場合、いずれかのプログラムが選択的に実行されることになる。このようなアプリケーションプログラムの選択指示は、外部装置２０側からアプリケーション選択コマンドとして与えられる。特定のアプリケーションプログラムを選択する指示が外部から与えられた場合、まず、ステップＳ１において、アプリケーション選択処理が行われる。続いて、ＥＥＰＲＯＭ１４内に格納されている当該選択アプリケーションプログラムについてのＣＰＵコードが参照される。参照されたＣＰＵコードが「Ａ」（Ａ社製ＣＰＵを示すコード）であった場合には、ステップＳ２からステップＳ３へと進み、ＣＰＵ１１によって直ちに当該プログラムが実行される。すなわち、選択されたアプリケーションがアプリケーションプログラムａであった場合、このプログラムａはＡ社製のＣＰＵ用のマシン語コードで記述されているため、ＣＰＵ１１によって直接実行されることになる。
【００２２】
一方、参照されたＣＰＵコードが「Ｂ」（Ｂ社製ＣＰＵを示すコード）であった場合には、ステップＳ４からステップＳ５へと進み、エミュレーションプログラムＢが選択され、ステップＳ３では、エミュレーションプログラムＢを介して、当該プログラムの実行が行われることになる。すなわち、選択されたアプリケーションがアプリケーションプログラムｂであった場合、このプログラムｂはＢ社製のＣＰＵ用のマシン語コードで記述されているため、ＣＰＵ１１をＢ社製のＣＰＵとして疑似的に動作させるためのエミュレーションプログラムＢを介して、プログラムが間接的に実行されることになる。
【００２３】
同様に、参照されたＣＰＵコードが「Ｃ」（Ｃ社製ＣＰＵを示すコード）であった場合には、ステップＳ６からステップＳ７へと進み、エミュレーションプログラムＣが選択され、ステップＳ３では、エミュレーションプログラムＣを介して、当該プログラムの実行が行われることになる。すなわち、選択されたアプリケーションがアプリケーションプログラムｃであった場合、このプログラムｃはＣ社製のＣＰＵ用のマシン語コードで記述されているため、ＣＰＵ１１をＣ社製のＣＰＵとして疑似的に動作させるためのエミュレーションプログラムＣを介して、プログラムが間接的に実行されることになる。
【００２４】
なお、参照されたＣＰＵコードが、「Ａ」，「Ｂ」，「Ｃ」のいずれでもない場合には、ステップＳ８において、実行不可のエラー処理がなされる。この場合、外部装置２０側から選択指示が与えられたアプリケーションプログラムは、ＣＰＵ１１によって実行することができないので、その旨を示すエラーレスポンスが外部装置２０側へと返されることになる。
【００２５】
本実施形態では、外部から取り込むアプリケーションプログラムに、当該プログラムが占有すべきアドレス空間および当該プログラムが使用すべきアドレス空間を示すアドレス値を付加するようにし、これらのアドレス空間が利用できない場合には、アドレス変換を行うことができるようにしている。
【００２６】
図４は、外部から取り込むアプリケーションプログラムおよびこれに付加される付加情報（第１段目〜第４段目に記載された情報）のフォーマット例を示すブロック図である。図示の例では、第１段目に記載されたＣＰＵコードは、前述したように、当該アプリケーションプログラムに対応するＣＰＵを示すコードであり、アプリケーションプログラムａ，ｂ，ｃの場合、それぞれ「Ａ」，「Ｂ」，「Ｃ」なるＣＰＵコードが入ることになる。第２段目に記載されたプログラム開始アドレスおよびプログラム終了アドレスは、当該プログラムおよびその付加情報が占有すべきアドレス空間の開始アドレス値および終了アドレス値を示すものである。また、第３段目に記載されたＥＥＰＲＯＭ使用開始アドレスおよびＥＥＰＲＯＭ使用終了アドレスは、当該プログラムが使用するＥＥＰＲＯＭのアドレス空間（不揮発性メモリのアドレス空間）の開始アドレス値および終了アドレス値を示すものであり、第４段目に記載されたＲＡＭ使用開始アドレスおよびＲＡＭ使用終了アドレスは、当該プログラムが使用するＲＡＭのアドレス空間（揮発性メモリのアドレス空間）の開始アドレス値および終了アドレス値を示すものである。最後の第５段目に記載されたアプリケーションプログラムは、当該アプリケーションプログラム自身（マシン語コードおよびデータ）を示すものである。
【００２７】
図５は、アプリケーションプログラムｂの構成を、図４のフォーマットで記述した具体例を示すブロック図である。第１段目のＣＰＵコードは、「Ｂ」となっており、当該アプリケーションプログラムｂが、Ｂ社製のＣＰＵ用のプログラムであることが示されている。前述したように、アプリケーションプログラムｂの実行時には、このＣＰＵコードに基づいて、エミュレーションプログラムＢが選択され、このエミュレーションプログラムＢを介してマシン語コードが実行されることになる。第２段目の「１０００〜２３ＦＦ（１６進表示、以下同様）」は、このアプリケーションプログラムｂおよびその付加情報が占有すべきアドレス空間、すなわちメモリ上のプログラム領域を示している。また、第３段目の「６０００〜６７ＦＦ」は、このアプリケーションプログラムｂが実行時に使用するＥＥＰＲＯＭのアドレス空間（ＥＥＰＲＯＭ使用領域）を示しており、第４段目の「Ｄ０００〜Ｄ７ＦＦ」は、このアプリケーションプログラムｂが実行時に使用するＲＡＭのアドレス空間（ＲＡＭ使用領域）を示している。第５段目は、このアプリケーションプログラムｂの本体部分、すなわち、マシン語コードおよびデータを示している。
【００２８】
外部装置２０から、プログラムロードコマンドによって、各アプリケーションプログラムをＩＣカード１０側へ与える際に、付加情報として、このような各アドレス値を付加しておけば、ＥＥＰＲＯＭ１４内の所定のアドレス空間に当該アプリケーションプログラムを格納することができ、また、ＥＥＰＲＯＭ１４やＲＡＭ１５内の所定のアドレス空間に使用領域を確保することができる。たとえば、図５に示す例の場合、このアプリケーションプログラムｂおよびその付加情報は、ＥＥＰＲＯＭ１４内のプログラム領域「１０００〜２３ＦＦ」に格納されることになり、実行時には、ＥＥＰＲＯＭ１４内に使用領域「６０００〜６７ＦＦ」およびＲＡＭ１５内に使用領域「Ｄ０００〜Ｄ７ＦＦ」が確保されることになる。
【００２９】
しかしながら、ＩＣカードによっては、必ずしもこのような付加情報の要求どおりのアドレス空間を確保することができない場合がある。ＩＣカードには、特に高度のセキュリティが要求される場合が多く、このような高度のセキュリティを要するデータ（たとえば、ＰＩＮ照合のための暗証コードなど）については、ＯＳプログラムによってのみアクセスが許可されるような対策を施すことが多い。このような場合、メモリの全アドレス空間のうちの一部については、アクセスが制限され、一般のアプリケーションプログラムには開放されないことになる。したがって、個々のアプリケーションプログラムが要求するアドレス空間が、一般のアプリケーションプログラムに開放されていないアドレス空間であった場合、当該アドレス空間を利用することはできなくなる。このような場合、別な代替アドレス空間を利用せざるを得ないが、単に、別なアドレス空間を代替利用するだけでは、プログラムの実行に支障が生じる可能性がある。特に、マシン語で記述されたプログラムには、特定のアドレス場所を絶対アドレス値で指定したコードが含まれていることがあり、単に代替アドレス空間を割り当てただけでは、プログラムを正しく実行することができない可能性がある。
【００３０】
そこで、本実施形態では、エミュレーションプログラムに、必要なアドレス変換を行う機能をもたせるようにしている。すなわち、外部から取り込んだアプリケーションプログラムに、当該プログラムが占有すべき第１のアドレス空間を示すアドレス値が付加されており、かつ、この第１のアドレス空間が利用可能ではない場合に、このアプリケーションプログラムを、利用可能な第２のアドレス空間内に格納するようにし、このアプリケーションプログラムの実行時には、第１のアドレス空間から第２のアドレス空間へのアドレス変換を行う機能をエミュレーションプログラムにもたせるようにしている。
【００３１】
たとえば、図５に示すような付加情報をもったアプリケーションプログラムｂは、図６(a) に示すような論理的なアドレス空間を要求していることになる。ところが、このＩＣカードにおいて、一般のアプリケーションプログラムに開放された物理的なアドレス空間が、図６(b) に示すようなものであったとしよう。すなわち、この例の場合、一般のアプリケーションプログラムには、ＥＥＰＲＯＭ空間として「４０００〜６ＦＦＦ」、ＲＡＭ空間として「Ｄ０００〜ＤＦＦＦ」なる物理的なアドレス空間しか開放されていない。この場合、論理的アドレスにおけるＥＥＰＲＯＭ使用領域およびＲＡＭ使用領域については、そのまま支障なく、物理的アドレス空間内に確保することができるが、プログラム領域については、物理的アドレス空間内に確保することができない。
【００３２】
このような場合は、プログラム領域については、論理的アドレス空間「１０００〜２３ＦＦ」を物理的アドレス空間「４０００〜５３ＦＦ」へとアドレス変換する処理を、エミュレーションプログラムに実行させるようにすればよい。すなわち、この場合、アプリケーションプログラムは、実際には、ＥＥＰＲＯＭ１４内のアドレス空間「４０００〜５３ＦＦ」へ格納されることになる。そして、このプログラムの実行時において、アドレス空間「１０００〜２３ＦＦ」内をアクセスするマシン語コードが与えられた場合には、アドレス値を「４０００〜５３ＦＦ」内の値に変換して（３０００を加算して）、ＣＰＵ１１へ与える処理が行われるようにすればよい。たとえば、２００５番地のデ−タを読み出すマシン語コ−ドが与えられた場合には、エミュレ−ションプログラムによって、これを５００５番地のデ−タを読み出すマシン語コ−ドに変換すればよい。
【００３３】
ＥＥＰＲＯＭ使用領域やＲＡＭ使用領域が確保できない場合も同様である。すなわち、外部から取り込んだアプリケーションプログラムに、当該プログラムが使用すべき第１のアドレス空間を示すアドレス値が付加されており、かつ、この第１のアドレス空間が利用可能ではない場合に、このアプリケーションプログラムの実行時には、利用可能な第２のアドレス空間を確保し、エミュレーションプログラムによって、第１のアドレス空間から第２のアドレス空間へのアドレス変換を行い、第２のアドレス空間を使用してプログラムを実行するようにすればよい。
【００３４】
以上、本発明を図示する実施形態に基づいて説明したが、本発明はこの実施形態に限定されるものではなく、この他にも種々の態様で実施可能である。
【００３５】
【発明の効果】
以上のとおり本発明に係るＩＣカードによれば、異なる複数種類のＩＣカード用に記述されたマシン語アプリケーションプログラムを実行することが可能な汎用性をもったＩＣカードを実現することができる。
【図面の簡単な説明】
【図１】一般的なＩＣカード１０と、外部装置（リーダライタ装置）２０との間で、情報の伝送を行っている状態を示すブロック図である。
【図２】本発明に係るＩＣカードのメモリ内の状態の一例を示すブロック図である。
【図３】本発明の一実施形態に係るＩＣカードにおけるアプリケーションプログラムの実行処理手順を示す流れ図である。
【図４】外部から与えるアプリケーションプログラムおよびこれに付加される情報のフォーマット例を示すブロック図である。
【図５】アプリケーションプログラムｂの構成を、図４のフォーマットで記述した具体例を示すブロック図である。
【図６】本発明に係るＩＣカードにおいて、エミュレーションプログラムによって実行されるアドレス変換の一例を示すメモリマップである。
【符号の説明】
１０：ＩＣカード
１１：ＣＰＵ１１
１２：Ｉ／Ｏインターフェイス
１３：ＲＯＭ
１４：ＥＥＰＲＯＭ
１５：ＲＡＭ
２０：外部装置
【図１】
0004203165.tif 000002
【図２】
0004203165.tif 000003
【図３】
0004203165.tif 000004
【図４】
0004203165.tif 000005
【図５】
0004203165.tif 000006
【図６】
0004203165.tif 000007