JP2002358202A - 複数形式のプログラム言語に対応した携帯情報処理装置 - Google Patents
複数形式のプログラム言語に対応した携帯情報処理装置Info
- Publication number
- JP2002358202A JP2002358202A JP2001164658A JP2001164658A JP2002358202A JP 2002358202 A JP2002358202 A JP 2002358202A JP 2001164658 A JP2001164658 A JP 2001164658A JP 2001164658 A JP2001164658 A JP 2001164658A JP 2002358202 A JP2002358202 A JP 2002358202A
- Authority
- JP
- Japan
- Prior art keywords
- function
- virtual machine
- information processing
- instruction
- program
- 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.)
- Withdrawn
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】 複数の言語形式のアプリケーションを使用可
能にする。 【解決手段】 少なくとも不揮発性メモリと情報処理手
段とを備え、不揮発性メモリに異なるプログラム言語に
対応した複数の仮想機械を格納した携帯情報処理装置に
おいて、プログラムを実行する関数の先頭に言語形式を
示す識別コード(4)を埋め込むとともに、識別コード
と仮想機械との対応を示す管理テーブルを前記不揮発性
メモリに格納し、関数毎に対応する仮想機械に基づいて
プログラムを実行するようにしたものである。
能にする。 【解決手段】 少なくとも不揮発性メモリと情報処理手
段とを備え、不揮発性メモリに異なるプログラム言語に
対応した複数の仮想機械を格納した携帯情報処理装置に
おいて、プログラムを実行する関数の先頭に言語形式を
示す識別コード(4)を埋め込むとともに、識別コード
と仮想機械との対応を示す管理テーブルを前記不揮発性
メモリに格納し、関数毎に対応する仮想機械に基づいて
プログラムを実行するようにしたものである。
Description
【0001】
【発明の属する技術分野】本発明は複数のアプリケーシ
ョンを搭載可能なICカード等の携帯可能情報処理装置
に関する。
ョンを搭載可能なICカード等の携帯可能情報処理装置
に関する。
【0002】
【従来の技術】近年、複数のアプリケーションを搭載可
能なICカードにおいて、仮想機械を採用したものが増
えている。仮想機械はメモリから中間言語に変換された
プログラムコードを1命令毎に読み出し解釈し、実行す
るという処理を繰り返すことでアプリケーションを実行
する。プログラムは、ICカードの外部で中間言語に変
換され、ICカード内の不揮発性メモリにロードされ
る。仮想機械を搭載してないICカードの場合は、IC
カードの外部において、ICカードのCPUが直接実行
できる形式に変換され、ICカード内の不揮発性メモリ
にロードされる。
能なICカードにおいて、仮想機械を採用したものが増
えている。仮想機械はメモリから中間言語に変換された
プログラムコードを1命令毎に読み出し解釈し、実行す
るという処理を繰り返すことでアプリケーションを実行
する。プログラムは、ICカードの外部で中間言語に変
換され、ICカード内の不揮発性メモリにロードされ
る。仮想機械を搭載してないICカードの場合は、IC
カードの外部において、ICカードのCPUが直接実行
できる形式に変換され、ICカード内の不揮発性メモリ
にロードされる。
【0003】この場合、変換の形式はCPUに依存する
ことになる。仮想機械を搭載したICカードでは、CP
Uのハードウエアに依存した部分は仮想機械が吸収する
ため、1度作成したアプリケーションを色々なICカー
ドで実行できるいう利点がある。また、新しいハードウ
エアが登場した場合でも、仮想機械を移植すればその上
で動作するプログラムは開発し直さなくても良いという
メリットがある。
ことになる。仮想機械を搭載したICカードでは、CP
Uのハードウエアに依存した部分は仮想機械が吸収する
ため、1度作成したアプリケーションを色々なICカー
ドで実行できるいう利点がある。また、新しいハードウ
エアが登場した場合でも、仮想機械を移植すればその上
で動作するプログラムは開発し直さなくても良いという
メリットがある。
【0004】
【発明が解決しようとする課題】CPU等のハードウエ
アの違いを吸収する目的で作られた仮想機械であるが、
現実には複数種類の仮想機械の形式が存在し、従来のI
Cカードではそのどれか1つにしか対応できないもので
あった。そのため、埋め込まれている仮想機械とプログ
ラム言語の形式が異なるアプリケーションはそのICカ
ードでは動作させることができない。この点、プログラ
ムにインタープリタの識別コードを記述し、対応するイ
ンタープリタを読みだしてプログラムを解釈実行するも
のも提案されている(特開2000−148942号公
報、特開2000−148944号公報)が、あるアプ
リケーションから別のアプリケーションやライブラリを
呼び出すことができず、また1つのアプリケーションは
同じ言語で書かれている必要がある。
アの違いを吸収する目的で作られた仮想機械であるが、
現実には複数種類の仮想機械の形式が存在し、従来のI
Cカードではそのどれか1つにしか対応できないもので
あった。そのため、埋め込まれている仮想機械とプログ
ラム言語の形式が異なるアプリケーションはそのICカ
ードでは動作させることができない。この点、プログラ
ムにインタープリタの識別コードを記述し、対応するイ
ンタープリタを読みだしてプログラムを解釈実行するも
のも提案されている(特開2000−148942号公
報、特開2000−148944号公報)が、あるアプ
リケーションから別のアプリケーションやライブラリを
呼び出すことができず、また1つのアプリケーションは
同じ言語で書かれている必要がある。
【0005】また、アプリケーション単位で仮想機械を
対応させているので、アプリケーションの関数単位で言
語の形式が異なる場合に対応することができない。例え
ば、従来、ICカード用としては、データの処理単位が
16ビットである仮想機械が主流を占めていたが、ハー
ドウエアの性能向上により、仮想機械が32ビット化さ
れた場合等、古いICカードと新しいICカードで互換
性がなくなり、特に関数単位でバージョンアップが行わ
れた場合には対応することができない。
対応させているので、アプリケーションの関数単位で言
語の形式が異なる場合に対応することができない。例え
ば、従来、ICカード用としては、データの処理単位が
16ビットである仮想機械が主流を占めていたが、ハー
ドウエアの性能向上により、仮想機械が32ビット化さ
れた場合等、古いICカードと新しいICカードで互換
性がなくなり、特に関数単位でバージョンアップが行わ
れた場合には対応することができない。
【0006】本発明は、複数の言語形式のアプリケーシ
ョンを使用することができ、同じ目的のアプリケーショ
ンを複数の言語で開発し直す手間を省き、プログラムの
一部分だけを違う言語で記述することも可能にして、関
数単位のバージョンアップ等にも対応できるようにする
ことを目的とする。
ョンを使用することができ、同じ目的のアプリケーショ
ンを複数の言語で開発し直す手間を省き、プログラムの
一部分だけを違う言語で記述することも可能にして、関
数単位のバージョンアップ等にも対応できるようにする
ことを目的とする。
【0007】
【課題を解決するための手段】本発明は、少なくとも不
揮発性メモリと情報処理手段とを備え、不揮発性メモリ
に異なるプログラム言語に対応した複数の仮想機械を格
納した携帯情報処理装置において、プログラムを実行す
る関数の先頭に言語形式を示す識別コードを埋め込むと
ともに、識別コードと仮想機械との対応を示す管理テー
ブルを前記不揮発性メモリに格納し、関数毎に対応する
仮想機械に基づいてプログラムを実行することを特徴と
する。
揮発性メモリと情報処理手段とを備え、不揮発性メモリ
に異なるプログラム言語に対応した複数の仮想機械を格
納した携帯情報処理装置において、プログラムを実行す
る関数の先頭に言語形式を示す識別コードを埋め込むと
ともに、識別コードと仮想機械との対応を示す管理テー
ブルを前記不揮発性メモリに格納し、関数毎に対応する
仮想機械に基づいてプログラムを実行することを特徴と
する。
【0008】
【発明の実施の形態】以下、本発明の実施の形態を図面
を参照しつつ説明する。以下では携帯可能情報処理装置
としてICカードを例にとって説明するが、本発明はI
Cカードに限定されるものではないことは言うまでもな
い。図1は本発明のプログラムコードの例を示す図、図
2は識別番号と仮想機械形式の管理テーブルを示す図で
ある。図1に示す例は、アプリケーション1全体はプロ
グラムコード(関数1)、プログラムコード(関数2)
からなっている場合であり、各関数毎にその先頭に識別
ブロック2が設けられ、このブロックには識別番号があ
るか否かを示すヘッダ3(0xFFFF等)と、それに
続いて識別番号4(0x0001等)が埋め込まれてい
る。なお、0xFFFF、0x0000等は16進数を
表している。
を参照しつつ説明する。以下では携帯可能情報処理装置
としてICカードを例にとって説明するが、本発明はI
Cカードに限定されるものではないことは言うまでもな
い。図1は本発明のプログラムコードの例を示す図、図
2は識別番号と仮想機械形式の管理テーブルを示す図で
ある。図1に示す例は、アプリケーション1全体はプロ
グラムコード(関数1)、プログラムコード(関数2)
からなっている場合であり、各関数毎にその先頭に識別
ブロック2が設けられ、このブロックには識別番号があ
るか否かを示すヘッダ3(0xFFFF等)と、それに
続いて識別番号4(0x0001等)が埋め込まれてい
る。なお、0xFFFF、0x0000等は16進数を
表している。
【0009】図2に示す識別番号と仮想機械の形式の対
応を示す管理テーブルはICカードの不揮発性メモリに
格納されていて、識別ブロックの識別番号から対応する
形式の仮想機械が判別できるようになっている。
応を示す管理テーブルはICカードの不揮発性メモリに
格納されていて、識別ブロックの識別番号から対応する
形式の仮想機械が判別できるようになっている。
【0010】ここで、関数とはプログラムの処理単位の
1つで、幾つかの命令で構成され、この関数を組み合わ
せることでプログラム全体が構築される。そして、プロ
グラムが最初に実行を開始する関数を以下においてはメ
イン関数と呼ぶ。
1つで、幾つかの命令で構成され、この関数を組み合わ
せることでプログラム全体が構築される。そして、プロ
グラムが最初に実行を開始する関数を以下においてはメ
イン関数と呼ぶ。
【0011】図1の例では、関数1の識別番号が0x0
001、関数2の識別番号が0x0002であり、図2
の管理テーブルから関数1は仮想機械A、関数2は仮想
機械Bであることが分かる。なお、識別コード(番号)
が埋め込まれていないアプリケーションをインストール
する場合には、インストール時にICカード側でデフォ
ルトの識別コードを埋め込むようにする。この実施例で
はデフォルトは仮想機械Aが対応している。
001、関数2の識別番号が0x0002であり、図2
の管理テーブルから関数1は仮想機械A、関数2は仮想
機械Bであることが分かる。なお、識別コード(番号)
が埋め込まれていないアプリケーションをインストール
する場合には、インストール時にICカード側でデフォ
ルトの識別コードを埋め込むようにする。この実施例で
はデフォルトは仮想機械Aが対応している。
【0012】また、連続する関数において、仮想機械が
同じである場合には、識別ブロックを省略するようにし
ても良い。従って、識別ブロックがない場合には、デフ
ォルトの形式であるか、直前の関数と同じ識別番号であ
ると判断する。
同じである場合には、識別ブロックを省略するようにし
ても良い。従って、識別ブロックがない場合には、デフ
ォルトの形式であるか、直前の関数と同じ識別番号であ
ると判断する。
【0013】次に、図3〜図5により本発明の処理の流
れを説明する。図3はOSがアプリケーションを呼び出
す処理手順を示す図である。ICカードを端末(外部ホ
ストコンピュータ、パソコン等)にセットしてカードを
活性化すると、ICカードのハードウエアのチェック等
の自己診断が行われる(ステップS1)。次いで、IC
カードから端末に対して通信条件等を渡すATRの送出
が行われ(ステップS2)、ICカードは端末からの命
令の受信待ち状態となる(ステップS3)。命令を受信
し(ステップS4)、受信した命令がアプリケーション
の選択命令であった場合、対応するアプリケーションが
選択される(ステップS5)。選択されたアプリケーシ
ョンのプログラムにヘッダがない場合、識別番号をデフ
ォルト値にセットし(ステップS6)、アプリケーショ
ンプログラムの先頭モジュールであるメイン関数を呼出
し、関数処理を行う(ステップS7)。こうしてアプリ
ケーションが実行されると、処理結果を端末に対して送
出し(ステップS8)、ステップS3に戻り受信待ち状
態となる。
れを説明する。図3はOSがアプリケーションを呼び出
す処理手順を示す図である。ICカードを端末(外部ホ
ストコンピュータ、パソコン等)にセットしてカードを
活性化すると、ICカードのハードウエアのチェック等
の自己診断が行われる(ステップS1)。次いで、IC
カードから端末に対して通信条件等を渡すATRの送出
が行われ(ステップS2)、ICカードは端末からの命
令の受信待ち状態となる(ステップS3)。命令を受信
し(ステップS4)、受信した命令がアプリケーション
の選択命令であった場合、対応するアプリケーションが
選択される(ステップS5)。選択されたアプリケーシ
ョンのプログラムにヘッダがない場合、識別番号をデフ
ォルト値にセットし(ステップS6)、アプリケーショ
ンプログラムの先頭モジュールであるメイン関数を呼出
し、関数処理を行う(ステップS7)。こうしてアプリ
ケーションが実行されると、処理結果を端末に対して送
出し(ステップS8)、ステップS3に戻り受信待ち状
態となる。
【0014】図4は関数の識別番号によって命令を解釈
し、実行する処理手順を示す図であり、各ブロックの関
数処理の手順を示している。なお、引数は関数の先頭番
地を表している。関数の先頭箇所(後述の例では4バイ
ト)を読み込み(ステップS11)、この4バイトのデ
ータから識別ブロックがあるか否か判断する(ステップ
S12)。識別ブロックがある場合、識別ブロックを読
み込み、アプリケーションの言語形式を判別(識別番号
をセット)する(ステップS13)。識別ブロックがな
いときには、最初の場合ではデフォルト値、そうでない
場合は前回のブロックの直前の関数の識別番号をセット
する(ステップS14)。次いで、識別番号が1か否か
判断し、1であればその形式で命令の解釈を実行し、関
数終了まで行う(ステップS15〜S17)。識別番号
が1でない場合、識別番号が2であるか否か判断し、2
であればその形式で命令を解釈実行し、関数が終了する
まで行う(ステップS18〜S20)。以後、順次、識
別番号がnか否か判断し、nであれば形式nにより命令
を解釈実行し、関数が終了するまで処理を実行する(ス
テップS21〜S23)。こうして関数処理が終了する
と、形式をこの関数が呼び出される前の状態に戻し(ス
テップS24)、関数処理を終了し、指定された番地に
戻る。
し、実行する処理手順を示す図であり、各ブロックの関
数処理の手順を示している。なお、引数は関数の先頭番
地を表している。関数の先頭箇所(後述の例では4バイ
ト)を読み込み(ステップS11)、この4バイトのデ
ータから識別ブロックがあるか否か判断する(ステップ
S12)。識別ブロックがある場合、識別ブロックを読
み込み、アプリケーションの言語形式を判別(識別番号
をセット)する(ステップS13)。識別ブロックがな
いときには、最初の場合ではデフォルト値、そうでない
場合は前回のブロックの直前の関数の識別番号をセット
する(ステップS14)。次いで、識別番号が1か否か
判断し、1であればその形式で命令の解釈を実行し、関
数終了まで行う(ステップS15〜S17)。識別番号
が1でない場合、識別番号が2であるか否か判断し、2
であればその形式で命令を解釈実行し、関数が終了する
まで行う(ステップS18〜S20)。以後、順次、識
別番号がnか否か判断し、nであれば形式nにより命令
を解釈実行し、関数が終了するまで処理を実行する(ス
テップS21〜S23)。こうして関数処理が終了する
と、形式をこの関数が呼び出される前の状態に戻し(ス
テップS24)、関数処理を終了し、指定された番地に
戻る。
【0015】図5は関数内での処理手順を示す図であ
る。解釈実行ルーチンは形式毎に別に存在する。命令を
解析し(ステップS31)、別の関数の呼出しか否か判
断し(ステップS32)、別の関数でなければそのまま
命令を実行し(ステップS33)、別の関数呼出しであ
れば、関数の先頭アドレスを引き数として「関数処理」
を再帰呼出しにする(ステップS34)。
る。解釈実行ルーチンは形式毎に別に存在する。命令を
解析し(ステップS31)、別の関数の呼出しか否か判
断し(ステップS32)、別の関数でなければそのまま
命令を実行し(ステップS33)、別の関数呼出しであ
れば、関数の先頭アドレスを引き数として「関数処理」
を再帰呼出しにする(ステップS34)。
【0016】次に、上記処理を図6のプログラムコード
の例により説明する。なお、図6はメモリの中に格納さ
れているプログラムコードの状態をイメージ的に示した
ものである。ここで、仮想機械A、識別子0001のコ
ードの意味は次の通りである。 A0:次の1バイトとその次の1バイトを足し、レジス
タに入れる加算命令 A1:次の1バイトとレジスタの値を足してレジスタに
入れる加算命令 B0:レジスタの値から次の1バイトを引き算してレジ
スタに入れる減算命令 C0:次の2バイトを先頭アドレスとする関数を呼び出
す呼出し命令。3バイト先に戻るように指定する。 E0:関数終了(リターン)。指定された番地に戻る。
の例により説明する。なお、図6はメモリの中に格納さ
れているプログラムコードの状態をイメージ的に示した
ものである。ここで、仮想機械A、識別子0001のコ
ードの意味は次の通りである。 A0:次の1バイトとその次の1バイトを足し、レジス
タに入れる加算命令 A1:次の1バイトとレジスタの値を足してレジスタに
入れる加算命令 B0:レジスタの値から次の1バイトを引き算してレジ
スタに入れる減算命令 C0:次の2バイトを先頭アドレスとする関数を呼び出
す呼出し命令。3バイト先に戻るように指定する。 E0:関数終了(リターン)。指定された番地に戻る。
【0017】仮想機械B、識別子0002のコードの意
味は次の通りである。 A0:次の2バイトとその次の2バイトを足してレジス
タに入れる加算命令 A1:次の2バイトとレジスタの値を足してレジスタに
入れる加算命令 B0:レジスタの値から次の2バイトを引き算する減算
命令 C1:次の2バイトをオフセット(現在の番地に加算す
ること)した値を先頭アドレスとして関数を呼び出す呼
出し命令。3バイト先に戻るように指定する。 E0:関数終了(リターン)。指定された番地に戻る。 なお、レジスタとは仮想機械が持つ一時変数であり、通
常、アクセスの速いメモリなどに置かれる。
味は次の通りである。 A0:次の2バイトとその次の2バイトを足してレジス
タに入れる加算命令 A1:次の2バイトとレジスタの値を足してレジスタに
入れる加算命令 B0:レジスタの値から次の2バイトを引き算する減算
命令 C1:次の2バイトをオフセット(現在の番地に加算す
ること)した値を先頭アドレスとして関数を呼び出す呼
出し命令。3バイト先に戻るように指定する。 E0:関数終了(リターン)。指定された番地に戻る。 なお、レジスタとは仮想機械が持つ一時変数であり、通
常、アクセスの速いメモリなどに置かれる。
【0018】次に、処理手順について説明する。 (1)ICカードの活性化、自己診断、ATR送出、O
Sが端末(外部ホスト、パソコンなど)から命令を受信
する。 (2)命令がICカードAPP1の選択命令であった場
合、APP1が選択される。 (3)識別番号をデフォルト値の形式1にセットした
後、APP1が格納されている先頭番地(この例では0
000。通常アプリケーションと先頭番地の対応テーブ
ルはOSが持っている。)へ処理を移す。 (4)先頭4バイトを読み込む。4バイトは0xFFF
Fなので、識別ブロックありと判断し、次の4バイトを
識別番号として読み込む。 (5)識別番号は0x0001なので、図2の管理テー
ブルよりこの関数は仮想機械A(形式1)で書かれたも
のであると判断し、以降の命令の解釈は仮想機械Aとし
て行う。 (6)次の1バイト0xA0を読み込むと、このコード
は仮想機械Aでは「次の1バイトとその次の1バイトを
足し、レジスタに入れる加算命令」なので、次の番地か
ら「0x01」、その次の番地から「0x02」を読み
込み、加算する。そして、加算結果の「0x03」をレ
ジスタに入れる。 (7)次の番地から命令を読み込むと、「0xB0」は
仮想機械Aでは「レジスタの値から次の1バイトを引き
算してレジスタに入れる減算命令」なので、次の番地か
ら「0x03」を読み取り、レジスタから減算する。即
ち、3−3=0はなり、その結果の「0x00」をレジ
スタに入れる。 (8)次の番地から命令を読み込むと、「0xC0」は
仮想機械Aでは「次の2バイトを先頭アドレスとする関
数を呼び出す呼出し命令。3バイト先に戻るように指定
する。」なので、次の2バイト「0x0010」を読み
込み、その番地を先頭アドレスとして関数呼出しを行
う。その際、「0x000C」を戻り先に指定する。 (9)次いで、0x0010を先頭アドレスとして4バ
イトを読み込むと、0xFFFFなので、識別ブロック
ありと判断し、次の4バイトを識別番号として読み込
む。 (10)この識別番号は0x002なので、図2の管理
テーブルよりこの関数は仮想機械B(形式2)で書かれ
たものであると判断し、以降の命令の解釈は仮想機械B
として行う。 (11)次の番地から命令を読み込むと、「0xC1」
は仮想機械Bでは「次の2バイトをオフセット(現在の
番地に加算すること)した値を先頭アドレスとして関数
を呼び出す呼出し命令。3バイト先に戻るように指定す
る。」なので、次の2バイト「0x000C」を読み込
み、その番地を先頭アドレス(0x0014+0x00
0C=0x0020)として関数呼出しを行う。その
際、「0x0017」を戻り先に指定する。 (12)0x0020から4バイトを読み込むと、0x
FFFFではないので、識別ブロックなしと判断し、以
降の命令の解釈は前回のブロックの直前の関数と同じ仮
想機械Bとして行う。 (13)次の番地から命令を読み込むと、「0xA1」
は仮想機械Bでは「次の2バイトとレジスタの値を足し
てレジスタに入れる加算命令」なので、次の番地から
「0x0005」を読み取り、レジスタの値と足す。そ
の結果、0+5=5となり、「0x05」をレジスタに
入れる。 (14)次の番地から命令を読み込むと、「0xE0」
は仮想機械Bでは「関数終了(リターン)。指定された
番地に戻る。」なので、(11)で指定された「0x0
017」に戻る。戻った後の命令実行形式は、仮想機械
Bに戻す(B→Bで同じ)。 (15)次の番地から命令を読み込むと、「0xA1」
は仮想機械Bでは「次の2バイトとレジスタの値を足し
てレジスタに入れる加算命令」なので、次の番地から
「0x0004」を読み取り、レジスタの値と足す。即
ち、5+4=9となり、その結果の「0x09」をレジ
スタに入れる。 (16)次の番地から命令を読み込むと、「0xE0」
は仮想機械Bでは、「関数終了(リターン)。指定され
た番地に戻る。」なので、(8)で指定された「0x0
00C」に戻る。戻った後の命令実行形式は仮想機械A
に戻す。 (17)次の番地から命令を読み込むと、「0xE0」
は仮想機械Aでは「関数終了(リターン)。指定された
番地に戻る。」なので、OSに戻る。こうして最終的な
結果、(レジスタの値)は0x09となる。
Sが端末(外部ホスト、パソコンなど)から命令を受信
する。 (2)命令がICカードAPP1の選択命令であった場
合、APP1が選択される。 (3)識別番号をデフォルト値の形式1にセットした
後、APP1が格納されている先頭番地(この例では0
000。通常アプリケーションと先頭番地の対応テーブ
ルはOSが持っている。)へ処理を移す。 (4)先頭4バイトを読み込む。4バイトは0xFFF
Fなので、識別ブロックありと判断し、次の4バイトを
識別番号として読み込む。 (5)識別番号は0x0001なので、図2の管理テー
ブルよりこの関数は仮想機械A(形式1)で書かれたも
のであると判断し、以降の命令の解釈は仮想機械Aとし
て行う。 (6)次の1バイト0xA0を読み込むと、このコード
は仮想機械Aでは「次の1バイトとその次の1バイトを
足し、レジスタに入れる加算命令」なので、次の番地か
ら「0x01」、その次の番地から「0x02」を読み
込み、加算する。そして、加算結果の「0x03」をレ
ジスタに入れる。 (7)次の番地から命令を読み込むと、「0xB0」は
仮想機械Aでは「レジスタの値から次の1バイトを引き
算してレジスタに入れる減算命令」なので、次の番地か
ら「0x03」を読み取り、レジスタから減算する。即
ち、3−3=0はなり、その結果の「0x00」をレジ
スタに入れる。 (8)次の番地から命令を読み込むと、「0xC0」は
仮想機械Aでは「次の2バイトを先頭アドレスとする関
数を呼び出す呼出し命令。3バイト先に戻るように指定
する。」なので、次の2バイト「0x0010」を読み
込み、その番地を先頭アドレスとして関数呼出しを行
う。その際、「0x000C」を戻り先に指定する。 (9)次いで、0x0010を先頭アドレスとして4バ
イトを読み込むと、0xFFFFなので、識別ブロック
ありと判断し、次の4バイトを識別番号として読み込
む。 (10)この識別番号は0x002なので、図2の管理
テーブルよりこの関数は仮想機械B(形式2)で書かれ
たものであると判断し、以降の命令の解釈は仮想機械B
として行う。 (11)次の番地から命令を読み込むと、「0xC1」
は仮想機械Bでは「次の2バイトをオフセット(現在の
番地に加算すること)した値を先頭アドレスとして関数
を呼び出す呼出し命令。3バイト先に戻るように指定す
る。」なので、次の2バイト「0x000C」を読み込
み、その番地を先頭アドレス(0x0014+0x00
0C=0x0020)として関数呼出しを行う。その
際、「0x0017」を戻り先に指定する。 (12)0x0020から4バイトを読み込むと、0x
FFFFではないので、識別ブロックなしと判断し、以
降の命令の解釈は前回のブロックの直前の関数と同じ仮
想機械Bとして行う。 (13)次の番地から命令を読み込むと、「0xA1」
は仮想機械Bでは「次の2バイトとレジスタの値を足し
てレジスタに入れる加算命令」なので、次の番地から
「0x0005」を読み取り、レジスタの値と足す。そ
の結果、0+5=5となり、「0x05」をレジスタに
入れる。 (14)次の番地から命令を読み込むと、「0xE0」
は仮想機械Bでは「関数終了(リターン)。指定された
番地に戻る。」なので、(11)で指定された「0x0
017」に戻る。戻った後の命令実行形式は、仮想機械
Bに戻す(B→Bで同じ)。 (15)次の番地から命令を読み込むと、「0xA1」
は仮想機械Bでは「次の2バイトとレジスタの値を足し
てレジスタに入れる加算命令」なので、次の番地から
「0x0004」を読み取り、レジスタの値と足す。即
ち、5+4=9となり、その結果の「0x09」をレジ
スタに入れる。 (16)次の番地から命令を読み込むと、「0xE0」
は仮想機械Bでは、「関数終了(リターン)。指定され
た番地に戻る。」なので、(8)で指定された「0x0
00C」に戻る。戻った後の命令実行形式は仮想機械A
に戻す。 (17)次の番地から命令を読み込むと、「0xE0」
は仮想機械Aでは「関数終了(リターン)。指定された
番地に戻る。」なので、OSに戻る。こうして最終的な
結果、(レジスタの値)は0x09となる。
【0019】
【発明の効果】以上のように、本発明によれば、以下の
ような効果が得られる。 1つの携帯可能情報処理装置、例えば1つのICカー
ドで複数の言語形式のアプリケーションを利用すること
ができ、カード利用者は複数のICカードを持ち、使い
分けることがなくなる。 アプリケーション開発者は同じ目的のアプリケーショ
ンを複数の言語で開発し直す手間を省くことができる。 アプリケーション開発者はプログラムの一部分だけを
違う言語で記述することも可能である。例えば、データ
処理単位が16ビットの言語で書かれたプログラムに対
し、大量のデータを扱う部分だけデータ処理単位が32
ビットの言語で書き直すことができ、全てを作成し直す
場合に比べて手間を省くことができる。
ような効果が得られる。 1つの携帯可能情報処理装置、例えば1つのICカー
ドで複数の言語形式のアプリケーションを利用すること
ができ、カード利用者は複数のICカードを持ち、使い
分けることがなくなる。 アプリケーション開発者は同じ目的のアプリケーショ
ンを複数の言語で開発し直す手間を省くことができる。 アプリケーション開発者はプログラムの一部分だけを
違う言語で記述することも可能である。例えば、データ
処理単位が16ビットの言語で書かれたプログラムに対
し、大量のデータを扱う部分だけデータ処理単位が32
ビットの言語で書き直すことができ、全てを作成し直す
場合に比べて手間を省くことができる。
【図1】 本発明のプログラムコードの例を示す図であ
る。
る。
【図2】 識別番号と仮想機械形式の管理テーブルを示
す図である。
す図である。
【図3】 OSがアプリケーションを呼び出す処理手順
を示す図である。
を示す図である。
【図4】 関数の識別番号によって命令を解釈し、実行
する処理手順を示す図である。
する処理手順を示す図である。
【図5】 関数内での処理手順を示す図である。
【図6】 プログラムコードの例について説明する図で
ある。
ある。
【符号の説明】 1…アプリケーション、2…識別ブロック、3…ヘッ
ダ、4…識別番号。
ダ、4…識別番号。
Claims (2)
- 【請求項1】 少なくとも不揮発性メモリと情報処理手
段とを備え、不揮発性メモリに異なるプログラム言語に
対応した複数の仮想機械を格納した携帯情報処理装置に
おいて、プログラムを実行する関数の先頭に言語形式を
示す識別コードを埋め込むとともに、識別コードと仮想
機械との対応を示す管理テーブルを前記不揮発性メモリ
に格納し、関数毎に対応する仮想機械に基づいてプログ
ラムを実行することを特徴とする複数形式のプログラム
言語に対応した携帯情報処理装置。 - 【請求項2】 デフォルトの言語形式、または直前の関
数と同じ言語形式のとき、識別コードを埋め込まないこ
とを特徴とする請求項1記載の複数形式のプログラム言
語に対応した携帯情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001164658A JP2002358202A (ja) | 2001-05-31 | 2001-05-31 | 複数形式のプログラム言語に対応した携帯情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001164658A JP2002358202A (ja) | 2001-05-31 | 2001-05-31 | 複数形式のプログラム言語に対応した携帯情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002358202A true JP2002358202A (ja) | 2002-12-13 |
Family
ID=19007448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001164658A Withdrawn JP2002358202A (ja) | 2001-05-31 | 2001-05-31 | 複数形式のプログラム言語に対応した携帯情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2002358202A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007257345A (ja) * | 2006-03-23 | 2007-10-04 | Nec Corp | 電子タグ |
-
2001
- 2001-05-31 JP JP2001164658A patent/JP2002358202A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007257345A (ja) * | 2006-03-23 | 2007-10-04 | Nec Corp | 電子タグ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7100086B1 (en) | Microcomputer, electronic equipment and debugging system | |
JP5292978B2 (ja) | 制御装置、情報処理装置、及びメモリモジュール認識方法 | |
CN110851163B (zh) | 一种基于can通信的兼容多设备平台的软件更新方法 | |
CN107870855A (zh) | 基于天熠嵌入式操作系统的调试系统 | |
CN112463662B (zh) | 一种用户态控制i2c设备的方法与终端 | |
CN112015522B (zh) | 系统功能扩展方法、装置及计算机可读存储介质 | |
US7930535B1 (en) | Method and apparatus for loading configuration data | |
JP3671667B2 (ja) | マイクロコンピュータ、電子機器及びデバッグシステム | |
CN112131172A (zh) | 一种减少延时的PCIe设备芯片初始化方法 | |
US20100153622A1 (en) | Data Access Controller and Data Accessing Method | |
CN100349121C (zh) | 嵌入式并行计算系统以及嵌入式并行计算方法 | |
CN110795373B (zh) | 一种i2c总线到并行总线的转换方法、终端及存储介质 | |
JP2008293076A (ja) | エラー判定プログラム、エラー判定方法、及び、電子機器 | |
JP2002358202A (ja) | 複数形式のプログラム言語に対応した携帯情報処理装置 | |
CN113806282A (zh) | 异构控制系统及异构控制系统的加载方法 | |
CN110187897B (zh) | 一种固件升级方法及装置 | |
JP4663210B2 (ja) | 半導体集積回路及びそれに内蔵された不揮発性メモリへの書き込み方法 | |
CN110362526B (zh) | Spi从机设备、存储和适配方法及计算机存储介质 | |
US6766448B2 (en) | Microcomputer for transferring program data to an internal memory from an external memory connected via a bus and a method therefor | |
JP3741182B2 (ja) | マイクロコンピュータ、電子機器及びデバッグシステム | |
CN117376229B (zh) | 基于嵌入式设备的ftp文件系统软件交叉调试方法及系统 | |
CN117348875B (zh) | 统一调度跨框架微组件的方法、装置、微前端系统及介质 | |
JP2005251217A (ja) | マイクロコンピュータ、電子機器及びデバッグシステム | |
CN115357306A (zh) | 一种基于以太网的fpga程序固化系统 | |
CN116610338A (zh) | 一种基于uart升级多芯片的控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080307 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090114 |