(57)【特許請求の範囲】
【請求項１】
プログラムファイル及びデータを記憶するメモリと、このメモリを使用してプログラムファイルを実行するプロセッサと、このプロセッサ又は論理回路の制御に従ってファイルのダウンロード等の通信を制御する無線通信部とを備えた移動通信端末であって、
前記プロセッサで直接実行できる機械語コードと、少なくとも当該機械語コードのマジックコード、チェックサム及びアプリケーションＩＤとを格納するヘッダとを備えた特定のデータ構造のプログラムファイルをダウンロードすると共に、前記メモリに格納するダウンロード制御部と、
実行指令が入力された時に、前記メモリに格納されたプログラムファイルを当該プログラムファイルのヘッダに含まれた各データを用いて当該プログラムファイルの有効性を検証する有効性検証機能と、
前記有効性が検証された場合に限って、当該プログラムファイルの機械語コードを前記メモリにロードし或いは前記プロセッサが直接にアクセスして、当該プログラムファイルの機械語コードを実行する実行部とを備え、
前記チェックサムが、前記機械語コードのチェックサム値であって、
前記マジックコードが、前記実行部の論理演算命令を使用した場合と同一の論理演算結果となる論理演算を用いて、前記アプリケーションＩＤとチェックサムとに論理演算をした論理演算値であって、
前記有効性検証機能が、前記実行指令が入力された時に、当該プログラムファイルのヘッダの前記アプリケーションＩＤと前記チェックサムとに前記実行部の論理演算をし、前記プログラムファイルのヘッダのマジックコードと当該論理演算結果とを比較して、一致した際に有効性有りとし、
前記実行部が、前記有効性有りとされたプログラムファイルの機械語コードを実行することを特徴とする移動通信端末。
【請求項２】
プログラムファイル及びデータを記憶するメモリと、このメモリを使用してプログラムファイルを実行するプロセッサと、このプロセッサ又は論理回路の制御に従ってファイルのダウンロード等の通信を制御する無線通信部とを備えた移動通信端末を使用して前記プログラムファイルを前記プロセッサに実行させるためのダウンロードプログラムファイル管理用プログラムであって、
前記チェックサムが、前記機械語コードのチェックサム値であって、
前記マジックコードが、前記実行部の論理演算命令を使用した場合と同一の論理演算結果となる論理演算を用いて、前記アプリケーションＩＤとチェックサムとに論理演算をした論理演算値であって、
前記移動通信端末用プログラムは、前記移動通信端末を動作させる指令として、
前記プロセッサで直接実行できる機械語コードと、少なくとも当該機械語コードのマジックコード、チェックサム及びアプリケーションＩＤとを格納するヘッダとを有する特定のデータ構造のプログラムファイルをダウンロードすると共に、前記メモリに格納する第１指令と、
前記プログラムファイルのヘッダに含まれた前記各データを用いて当該プログラムファイルの有効性を検証させる第２指令と、
前記第２指令に応じて有効性が検証される場合に限って、当該プログラムファイルの機械語コードを前記メモリにロードし或いは前記プロセッサが直接にアクセスして、当該プログラムファイルの機械語コードを実行させる第３指令とを備え、
前記第２指令が、前記プログラムファイルのヘッダの前記アプリケーションＩＤと前記チェックサムとに前記プロセッサ又は論理回路の論理演算をし、前記プログラムファイルのヘッダのマジックコードと当該論理演算結果とを比較して、一致した際に有効性有りとさせ、
前記第３指令が、前記有効性有りとされたプログラムファイルの機械語コードを実行させることを特徴とするダウンロードプログラムファイル管理用プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機械語コードからなる実行領域を含む移動通信端末用ファイル構造及びそれを用いたファイル実行方法に関し、さらに詳しくは、端末のプロセッサによって直接実行可能な機械語実行コードを含み、ファイルの信頼性・有効性検証、ファイルの実行可能回数または時間制限、及び自動更新のためのＵＲＬ情報を含むヘッダを備える移動通信端末用ファイル構造及びそれを用いた実行方法に関する。
【０００２】
【従来の技術】
最近、移動通信サービスの普及に伴って、殆どの人に１つ以上の移動通信サービスが提供されている。このような移動通信サービスは、基本的な音声通話、文字・音声メッセージ伝送、ひいては無線インターネットサービス、移動通信端末用コンテンツの利用などに拡大されつつある。
その中でも、無線インターネットサービスは、端末を用いてインターネット上のサーバーに接続して必要な情報を入手するうえ、各種イメージ、ベル音（着信音、着信メロディー）、ゲームなどの無線インターネット・コンテンツ・ファイルを無線でダウンロードして利用することを可能にする。
【０００３】
移動通信端末用ファイルのダウンロード及び実行のために、主に運営体制又はハードウェア独立なプラットフォーム(platform)を利用しており、移動通信端末用ファイルは所定のプログラム開発ツール(Development Kit)を用いて作成する。
移動通信端末用ファイルは、端末メモリ制限などによって小容量にしなければならず、プログラミング及び実行の便宜上、標準化されたライブラリ(Library)のＡＰＩを用いる。このようなＡＰＩは端末のコンテンツ実行用プラットフォームで使用可能であり、コンテンツ用応用プログラム（アプリケーションプログラム）を単純化及び低容量化することができる。
【０００４】
ところが、従来の端末用ファイル実行のためには、端末のプロセッサによって直接実行が不可能なバイトコード基盤のプログラムをダウンロードし、端末の実行プラットフォームとして既に内蔵されているＫＶＭ、ＧＶＭ、ＪＶＭなどの仮想マシン(ＶＭ：Virtual Machine）を用いてバイトコードを解釈し、機械語に変換（翻訳，interpret）した後実行する。ＪＡＶＡ（商標）基盤の無線プラットフォームは前述した方式で実行されるが、このような方式はプラットフォーム独立なので他機種間の互換性は増加させたが、プログラムの実行時間が長くかかり、プログラムを格納するためのメモリ空間も多く浪費されるという欠点がある。
【０００５】
図１は従来の移動通信端末用ファイルの内部構成を示すもので、ファイルの実行領域とリソース領域は全く分離されておらず１つの領域内に含まれており、実行領域はバイトコードからなる実行コードと実行データに区分されている。
このような、ファイルをダウンロードした端末のプラットフォームは、実行のために仮想マシンを用いてバイトコードを翻訳して機械語に変換した後、実行しなければならない。従って、実行に長い時間がかかるうえ、通常コンパイルされた機械語よりはバイトコードがより大きい容量を有するので、比較的メモリ空間の小さい端末に多くのファイルを格納することができないという欠点があった。
【０００６】
また、バイトコードを使用する場合には、使用メモリ容量を予測することが困難で、プログラムを実行するために大量のメモリを使用する。このため、移動通信端末はより大きいメモリを搭載しなければならず、この大きいメモリ容量と、インタプリタによる変換を含むプログラムの長い実行時間とから、プログラムファイルをダウンロードして実行できる移動通信端末は、そのバッテリの稼働時間が短くなってしまう。
【０００７】
通常、プログラムの遠隔ダウンロード及び実行時には、バイトコードで作成されたプログラムをダウンロードして仮想マシンを用いてバイトコードを機械語に翻訳した後実行する方式（ＪＡＶＡ（商標）、Ｃ＋＋）が主に用いられている。ところが、このような翻訳実行方式はファイルを実行するプロセッサがそれぞれ異なるために必要なものであって、全てのファイル実行プロセッサが同じ形態であれば、容量が小さくて実行速度も速い機械語からなるファイルを用いることが便利である。
【０００８】
一方、移動通信端末に使用されるプロセッサは、ハードウェア的又は運営体制ＯＳの面においてほぼ統一した仕様を有しているので、敢えてバイトコードを使用する必要がない。
本発明は、かかる点に着目したもので、有効性検証、使用期間制限及び自動更新機能を備えるヘッダと、機械語コードからなる実行領域と、言語別に選択されるリソース領域とからなる移動通信端末用ファイルの構造を提案する。
【０００９】
【発明が解決しようとする課題】
本発明の目的は、機械語コードを含むことにより、容量を減少させ且つ実行速度を向上させることが可能な移動通信端末用ファイル構造を提供することにある。
本発明の他の目的は、ヘッダと、機械語コードからなる実行領域と、言語別に選択されるリソース領域とからなる移動通信端末用ファイル構造を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するための本発明に係る移動通信端は、プログラムファイル及びデータを記憶するメモリと、このメモリを使用してプログラムファイルを実行するプロセッサと、このプロセッサ又は論理回路の制御に従ってファイルのダウンロード等の通信を制御する無線通信部とを備えている。
そして、前記プロセッサで直接実行できる機械語コードと、少なくとも当該機械語コードのマジックコード、チェックサム及びアプリケーションＩＤとを格納するヘッダとを備えた特定のデータ構造のプログラムファイルをダウンロードすると共に、前記メモリに格納するダウンロード制御部と、実行指令が入力された時に、前記メモリに格納されたプログラムファイルを当該プログラムファイルのヘッダに含まれた各データを用いて当該プログラムファイルの有効性を検証する有効性検証機能と、前記有効性が検証された場合に限って、当該プログラムファイルの機械語コードを前記メモリにロードし或いは前記プロセッサが直接にアクセスして、当該プログラムファイルの機械語コードを実行する実行部とを備えている。
【００１１】
そして、前記チェックサムが、前記機械語コードのチェックサム値であって、前記マジックコードが、前記実行部の論理演算命令を使用した場合と同一の論理演算結果となる論理演算を用いて、前記アプリケーションＩＤとチェックサムとに論理演算をした論理演算値である。
【００１２】
さらに、前記有効性検証機能が、前記実行指令が入力された時に、当該プログラムファイルのヘッダの前記アプリケーションＩＤと前記チェックサムとに前記実行部の論理演算をし、前記プログラムファイルのヘッダのマジックコードと当該論理演算結果とを比較して、一致した際に有効性有りとし、前記実行部が、前記有効性有りとされたプログラムファイルの機械語コードを実行する。
【００１３】
【発明の実施の形態】
以下、添付図に基づいて本発明の実施形態を詳細に説明する。
図２は本発明に係る移動通信端末用ファイルの内部構成を示すもので、まずヘッダ領域と、機械語形態の実行コード及び実行データからなる実行領域と、ファイル実行時に実行領域が参照するデータとしてのリソース領域とからなっている。
実行領域の実行コード及び実行データは、作成されたソースコードまたはバイトコードをコンパイルまたは変換（翻訳）することにより生成される。機械語コードは、０又は１を１ビットとする２進数であり、その一部がプロセッサに対する命令に、残りの部分がメモリのアドレスや変数として用いられる。
【００１４】
次いで、ファイルヘッダの詳細な構成を図３、リソース領域の細部構成を図４に基づいてそれぞれ詳細に説明する。
図３は本発明に使用されるファイルヘッダの詳細構成図であって、ファイルヘッダは、プロセッサによって直接実行または使用される実行領域及びリソース領域とは異なり、それ自体では使用されないが、特殊機能の実現に必要なデータを含む部分である。
【００１５】
本発明に使用されるファイルヘッダは固定フィールド(Fixed Field)と可変フィールド(Variable Field)に大別される。
固定フィールドは、固定の長さを有する領域であって、ファイルを実行するための実行領域の位置及びサイズデータ、実行領域に含まれたプロセッサによる実行開始位置に対する情報、指定された領域及び言語に対応するように含まれたデータの集合であるリソース領域の位置及びサイズ、ファイルの有効性及び信頼性を確認するためのデータなどを含んでいる。
ヘッダの固定フィールドに含まれるデータの種類を具体的に考察すると、下記表１の通りである。
【００１６】
【表１】
0003824580.tif 000002
【００１７】
一方、ヘッダの可変フィールドは下記表２のようなデータ（フィールド）を含んでいる。
【００１８】
【表２】
0003824580.tif 000003
【００１９】
チェックサムは、実行領域、リソース領域等の全データを例えば４バイト単位で加算して、アプリケーションＩＤの語長と同一長のみの長さで切り出した値である。例えば、下位４ビットのみを切り出すようにしてもよい。プログラムのコンパイルの時にチェックサムを求め、このヘッダのチェックサムフィールドに格納する。移動通信端末側でファイルの容量を４バイト単位で算出し、一定の手法で切り出した実際にダウンロードされたファイルのチェックサムと、このヘッダに予め格納されるチェックサムとを比較することで、第１に、そのファイルの全体が正常にダウンロードされ、格納されたか否かを確認することができる。第２に、実行直前までにこのファイルの一部にプログラムやデータ等がウイルス等悪意のあるプログラムによって追加されたり、また、削除されたりというファイルへの変更が行われていないことを確認できる。このように、本実施形態では、チェックサムを用いてファイルの信頼性を検証する。
【００２０】
アプリケーションＩＤは、プログラマや、ダウンロードのためのサーバーや、通信回線のキャリヤなどによって利用されるこのファイル（アプリケーション）を他のアプリケーションから識別するためのＩＤである。移動通信端末にとっては、対外的に利用すべきアプリケーションの名称となる。
【００２１】
マジックナンバーは、移動通信端末のプラットフォームに取ってのファイルの名称であり、移動通信端末にとってのアプリケーションの番号である。本実施形態では、マジックナンバーは、人間が直接に値を求めることが複雑な番号としている。すなわち、本実施形態では、アプリケーションＩＤと、チェックサムとを二進数で論理演算し、その演算結果をマジックナンバーとする。プラットフォームがダウンロードしたアプリケーションを識別するには、このマジックナンバーを利用するため、移動通信端末を悪意のあるプログラマから保護することができる。すなわち、移動通信端末によってプログラムが起動されるためには、このマジックナンバーを知らなければならず、一方、チェックサムとアプリケーションＩＤとの論理演算結果をマジックナンバーとする場合、マジックナンバーを通常のコンピュータ操作で知ることは困難である。従って、メーカーやキャリヤによって許容された手法以外の手法でダウンロード用のプログラムを作成することは困難である。本実施形態では、マジックナンバーのデータ構造をこのように工夫することで、移動通信端末を悪意のあるプログラマから保護することができる。
【００２２】
論理演算は、ＸＯＲとしているが、ＸＯＲの場合にはオーバーフローがない点等で利用しやすいが、論理和、論理積などでも良い。そして、論理演算を行う場合、２つの引数の桁数が同一であると全桁について演算がなされる。表１に示す例では、アプリケーションＩＤとチェックサムとは同一に４バイトとしている。チェックサムを４バイトとするには、４バイトで表現できる容量よりもファイル容量が大きい場合には、切り出しを行う。仮に小さい場合には、予め特定されたビット列を合成するなどして、４バイトに合わせるとよい。この切り出しや合成、追加をここでは編集という。
【００２３】
このチェックサムの編集の仕組みを、秘密にしておくことで、マジックナンバーの悪意のある特定作業はより困難となる。また、アプリケーションＩＤの範囲やファイル容量の範囲毎にこの編集の仕組みを変化させることで、マジックナンバーの特定は困難となる。このように、一定の論理関係に基づいて編集の仕組みを変化させる場合を含む論理演算による編集を、「所定の編集」という。所定の編集では、アプリケーションＩＤとチェックサムとのＸＯＲと、編集の仕組みを変化させた論理演算とを含む。また、所定の編集は、チェックサムの切り出しや合成のみならず、他の論理演算を行うようにしても良い。
【００２４】
また、マジックナンバーは、合計で８バイトとして、アプリケーションＩＤと上記所定の編集によるマジックナンバーとの合成としてもよい。これにより、アプリケーションＩＤをユニークとしておくと、マジックナンバーは必ずユニークとなる。
【００２５】
有効期限（使用期間制限）は、このプログラムのコンパイル時か、またはダウンロード時にヘッダの有効期限フィールドに格納される。移動通信端末では、端末の内部時計等とこの有効期限とを比較することで、プログラムファイルの使用制限を制御する。
【００２６】
使用回数は、有効期限と同様に、このプログラムのコンパイル時か、またはダウンロード時にヘッダの使用回数フィールドに格納される。移動通信端末では、プログラムの実行回数をメモリーに格納するか、又は無線通信回線を介してサーバー等に格納し、プログラムファイルの起動時にこの使用回数と比較することで、プログラムファイルの使用制限を制御する。
【００２７】
実行領域は実行コードセグメント(RO segment)と実行データセグメント(RW segment)に二分される。
実行コードセグメント(RO segment)は、端末のプロセッサによって直接実行が可能な機械語コードを含む領域である。一般に、機械語コードはプログラムのソースコード(source code)を入力とするコンパイラー(compiler)を用いて生成される。このように生成された機械語コードをファイルの実行コードセグメント(RO segment)に記憶していて、実行の際に端末のメモリにロードし、或いはプロセッサによって直接アクセス可能な場合にはメモリにロードする手続無しで直接実行される。
【００２８】
実行データセグメント(RW segment)は、端末のプロセッサによって直接解釈可能な機械語形態のデータを有する領域である。実行コードセグメント(RO segment)と同様の手続を経て生成され、実行時に必ず端末のメモリにロードされなければならない。
【００２９】
リソース領域は、実行領域に含まれた機械語プログラム(RO及びRW segment)が使用するデータを有する領域である。リソース領域に含まれたデータは文字列とアイコン及び画像（イメージ）データである。各データは言語別に区分されてリソース領域に含まれるが、このように言語別に区分されたデータの各集合をリソースセクション(resource section)という。リソース領域はこのように言語別に区分された1つ以上のリソースセクションとリソースヘッダからなる。
【００３０】
リソースセクションはプログラムが使用する言語に応じて選択的にメモリにロードされて使用される。従って、各使用言語別リソースセクションの該当言語コードを区分する情報がリソースヘッダに含まれており、この際、使用される言語コードはＩＳＯ ６３７：１９８８規格に従うとよい。
【００３１】
図４は前記リソース領域のリソースヘッダ部分とリソースセクション部分の詳細構成図である。ここでは、機械語コードで利用しやすいＨＥＸフォーマットとしている。ＨＥＸフォーマットは、１６ビット又は３２ビット等で、例えば１バイトを上下の４ビットに分けて１６進数２桁で表現する。１６進数は２進数への変換が容易で、プロセッサの処理時間が短い。
本実施形態における「リソース領域」は、アプリケーションの実行コードが参照するデータを格納する領域であって、ダウンロードしたアプリケーションの実行時に実行コードがリソース領域を参照するためにトークンＩＤを利用する。すなわち、1つのトークＩＤは1つのリソースデータを意味し、実行コードはリソース領域（リソースセクション）から1つのトークＩＤに該当するリソースを抽出して使用する。通常、多国語の支援のために、リソース領域では使用言語別にリソースセクションが区分されており、1つのトークンＩＤに対しても使用言語数だけのリソースが存在する。すなわち、1つの言語を支援するリソースセクション＃０に全てｎ個のリソースがある。従って、実行コードは支援する言語に対するリソースセクションのうちトークンＩＤ番号に該当するリソースを参照する。
【００３２】
図５は本発明に係るファイルダウンロード及び実行過程を示すフローチャートである。
まず、所定のプラットフォームを備えた移動通信端末を利用し、移動通信網及びインターネット網を介して前記構造の特定のファイルをダウンロードする（Ｓ５１１，第１工程）。このようなファイルのダウンロードはインターネット網と移動通信網及び所定のゲートウェイ（ＷＡＰゲートウェイ）を用いる無線インターネットサービスで一般的に行われるものなので、その詳細な説明は省略する。
【００３３】
端末のプラットフォームはダウンロードしたファイルのヘッダに含まれた所定のデータを用いてファイルの信頼性又は有効性を検証する（Ｓ５１２，第２工程）。ファイルの信頼性検証には、チェックサム(checksum)を用いる。プラットフォームは、ダウンロードされたファイルの容量を確認し、その容量を示す数値の例えば下位４バイトを切り出す。この切り出された数値と、ファイルのヘッダに格納されたチェックサムとを比較し、一致する場合には信頼性有りとする。本実施形態では、チェックサムを固定長としているため、ファイルの容量を示す数値から切り出しを行っているが、ヘッダのチェックサムフィールドを可変長とする場合には、全体を比較するようにしても良い。
ここでは、ファイルの信頼性検証は、ファイルヘッダサイズ(File header size)フィールドからファイルの残り部分まで全体内容を４バイト単位で加算し、その結果の下位４バイトのみを取った値がヘッダに記憶されたチェックサム４バイトと同一の場合にのみプログラムの信頼性があると判定する。
【００３４】
ファイルの有効性検証には、前述したヘッダのマジックナンバー(Magic number)、チェックサム(checksum)及びアプリケーションＩＤ(Application ID)を使用する。上述したように、プラットフォームは、チェックサムとアプリケーションＩＤとに所定の編集を行うことで、論理演算値を算出する。そして、その論理演算結果とマジックナンバーとを比較することで、そのファイルの有効性検証を行う。また、プラットフォームは、予め定められたプログラムのみを実行する場合には、実行可能なファイルのマジックナンバーを書き換え不能なＲＯＭ等に格納しておき、マジックナンバーが一致する場合であっても、ＲＯＭに格納されたマジックナンバーと異なる場合には実行を許容しないようにしても良い。このＲＯＭに格納する例では、当該移動通信端末の販売後に完成するプログラムファイルの実行が不可能となってしまう。従って、プログラムファイルのデータ構造として、マジックナンバーの範囲が一定範囲となるようにチェックサムとの関係でアプリケーションＩＤを特定するようにし、プラットフォームはマジックナンバーが一定範囲でない場合（例えば、マジックナンバーが正のとき）には実行を許容しないようにしても良い。
ここでは、チャックサムとアプリケーションＩＤの各４バイトをＸＯＲ（eXclusive OR，排他的論理和）し、ヘッダに記録されているマジックナンバーと比較して同一の場合に限ってファイルの有効性があると判定する。
【００３５】
このようなファイルの有効性及び信頼性検証が両方とも認められた場合に限って、ファイルの実行を許容する（Ｓ５１３）。また、1つの検証のみを行うか、通過しても特別な場合には実行を許容するようにすることもできる。
【００３６】
このように、ファイルの有効性及び/又は信頼性が確認された場合にファイルを実行する。ファイルの実行は、基本的な通信機能等によって使用される必要なメモリを別に確保した状態で、ファイルの実行領域（ＲＯ及びＲＷセグメント等）に格納されたコードをメモリにロードし、或いは直接アクセスが可能な場合にはメモリのローディング過程なしで実行ビュー(Execution View)を作る（Ｓ５１６，第３工程）。実行ビューとは、プロセッサによってプログラムが実行できる形態でメモリにロードされるか、或いはメモリロード無しで実行準備が出来た状態を意味する。
【００３７】
すなわち、このステップＳ５１６では、実行ビュー生成工程として、第１に、ファイルヘッダのインポートライブラリＩＤ等に基づいて予めプラットフォームに格納され又は同時にダウンロードしたライブラリとの関係でリンクやアドレスの特定を行うことで、ライブラリを使用可能にする。第２に、ＲＯ及びＲＷセグメントのアドレス方式が実アドレスではない場合には、機械語コードの修飾アドレス等を当該プラットフォームのメモリのアドレスに割り当てる。このようなライブラリやプラットフォームのメモリアドレスとの関係を整理し、機械語コードを実行可能な状態とする。また、第３に、ファイルヘッダのＺＩセグメントサイズが格納されている場合には、当該機械語コードによって使用されるメモリをプラットフォームのメモリから確保する。ＺＩセグメントサイズが格納されていない場合には、可能なメモリを当該機械語コードに割り当てる。使用メモリを確保できない場合には、プログラムの実行は許容されない。
【００３８】
機械語プログラムをダウンロードする移動通信端末で当該プログラムを実行する場合には、ステップＳ５１６が、プログラムファイルのプラットフォームへの格納形態に応じてメモリへのロード又は端末プロセッサの直接アクセスを制御すると共に、当該機械語コードに前記プラットフォームのメモリーのアドレスを割り当て及び/又は当該プラットフォームのライブラリを使用可能に設定する実行ビュー生成工程を備えると良い。
【００３９】
また、端末のプラットフォームが実行ビューを生成する際に、端末に設定された使用言語の設定に応じてリソース領域の当該リソースセクションをメモリにロードする（Ｓ５１７）。
【００４０】
生成された実行ビューと、ロードされたリソースセクションを用いてファイルの所定の機能を具現することにより、ファイルを実行する（Ｓ５１８）。ファイル実行に成功すると、プラットフォームは、使用回数のモニタリングとして、ファイル実行回数に１を加算して、メモリ３等に実際の使用回数を格納する。
【００４１】
前記ファイルヘッダの有効期限（Expire date）または使用回数（Usage Count）に所定の値が割り当てられることにより、使用可能期間又は使用可能回数が制限されている場合には（Ｓ５１４）、プラットフォームは前記ファイルの使用回数又は使用期間をモニタリングし、ファイルヘッダに含まれた使用可能期間又は使用可能回数を超えれば実行を許容しないようにする工程をさらに含むことができる（Ｓ５１５、Ｓ５２２，第４工程）。
【００４２】
また、ファイルヘッダのUR及びUpdate URL stringフィールドに値が与えられて自動更新機能(Updating)がある場合（Ｓ５１９）、更新条件になったか或いはユーザからの更新要請があれば（Ｓ５２０）、ファイルヘッダにある更新ＵＲＬストリング（Update URL string）を用いて該当ファイルをダウンロードするサイトに接続し、そのサイトから更新のためのデータをダウンロードして更新（アップデート）する工程（Ｓ５２１，第５工程）をさらに含むことができる。
更新条件の例としては、所定の期間が経過した後アップデートする場合や、所定の回数だけ実行した後アップデートする場合などが挙げられる。
【００４３】
図６は、本実施形態による特定のデータ構造のプログラムファイルをダウンロードして実行する移動通信端末の機能構成を示すブロック図である。本実施形態による移動通信端末は、プロセッサ又は論理回路の制御に従ってファイルのダウンロード等の通信を制御する無線通信部１と、ディスプレイ及びキーパッド等のユーザインタフェース２と、プログラムファイル及びデータを記憶するメモリ３と、このメモリ３を使用してプログラムファイルを実行するプロセッサ４と、実行部（プロセッサ）４と、ダウンロードプログラムファイルを管理するためのダウンロードプログラムファイル制御部１０とを備えている。
【００４４】
そして、ダウンロードプログラムファイル制御部１０は、ダウンロード制御部１１と、更新制御部１２と、実行制御部１２とを備えている。ダウンロード制御部１１は、プロセッサで直接実行できる機械語コードと、少なくとも当該機械語コードのマジックコード、チェックサム及びアプリケーションＩＤとを格納するヘッダとを有する特定のデータ構造のプログラムファイルをダウンロードすると共に、メモリ３に格納する。
【００４５】
実行制御部１２は、本実施形態では特に、ステップＳ５１２及び５１３のうち有効性に関する処理を実行する有効性検証機能１４と、当該工程のうち信頼性に関する処理を実行する信頼性検証機能１５と、ステップＳ５１４，５１５の処理を実行する使用制限機能１６と、ステップＳ５１６の実行ビュー生成に関する処理を実行する実行ビュー生成部１７と、ステップＳ５１７の処理を実行するリソースデータ読込制御部１８とを備えている。
【００４６】
有効性検証機能１４は、実行指令が入力された時に、メモリ３に格納されたプログラムファイルを当該プログラムファイルのヘッダに含まれた各データ（チェックサム、アプリケーションＩＤ、マジックナンバー等）を用いて当該プログラムファイルの有効性を検証する。例えば、ファイルの容量を示す数値のうちヘッダのアプリケーションＩＤと同一長さの数値を切り出し、その数値とアプリケーションＩＤとのＸＯＲを求める。このＸＯＲの演算結果と、ヘッダに予め格納されたマジックナンバーとが一致する場合に、有効性有りと判定し、不一致の場合には信頼性なしと判定する。有効性検証機能１４は、上記所定の編集を行う編集機能をさらに備えるようにしても良い。
【００４７】
信頼性検証機能１５は、実行指令が入力されたときに、まず、メモリ３に格納されたプログラムファイルの容量を測定すると共に、当該容量を示す数値のうちヘッダのチェックサムと同一長さの数値から、予め定められた部分（例えば、下位４バイト）を切り出す。続いて、切り出した数値と、ヘッダに予め格納されたチェックサムとを比較する。チェックサムが一致する場合には、信頼性有りと判定し、不一致の場合には信頼性なしと判定する。
【００４８】
使用制限機能１６は、使用期間制限に関しては、現在日時を内部時計等から読み出し、ヘッダに含まれる有効期限（Expire Date）と比較して、有効期限を過ぎている場合には、実行を不許可とする。使用回数に関しては、メモリー３等に格納した実際の使用回数と、ファイルヘッダに予め格納された使用回数（Usage Count）とを比較して、実際の使用回数がヘッダに定義された使用回数と同一又は越える場合に、実行を不許可とする。
【００４９】
実行ビュー生成部１７は、ＺＩセグメントに格納されたメモリサイズのメモリ空間をメモリ３への確保を試み、確保できない場合には実行を不可能とする。また、ＲＯセグメントに格納された実行コードのアドレス指定方式によっては、当該実行コードに実アドレスを割り当てる。さらに、ヘッダのＤＬ等を参照して、ライブラリを使用可能にするための処理を行う。そして、ダウンロードされたプログラムファイルのうち、ＲＯ及びＲＷセグメントの実際の格納位置が、プロセッサ４によって直接に実行可能なアドレスであれば、ライブラリ初期化関数アドレス等との関係でプロセッサに機械語コードの先頭アドレスを渡す。一方、直接に実行できないアドレスに格納されている場合には、実行可能なメモリへのロードを行い、そのアドレスをプロセッサに渡す。
【００５０】
リソースデータ読込制御部１８は、リソースデータの国コード等に基づいて、使用可能言語を判定し、使用可能言語に対応するリソースデータの読込を制御する。
【００５１】
更新制御部１２は、ステップＳ５１９，５２０及び５２１の処理を行う。この自動更新のタイミングは、例えば、所定の期間（有効期限）が経過した後アップデートする場合や、所定の回数（使用回数）だけ実行した後アップデートする場合などがある。これにより、期間や回数での課金をスムーズに行うことができる。
【００５２】
実行部（プロセッサ）４は、有効性等が検証された場合に限って、当該プログラムファイルの機械語コードをメモリ３にロードし或いは当該プロセッサ４が直接にアクセスして、当該プログラムファイルの機械語コードを実行する。
実行部４は、移動通信端末に装備されたＣＰＵ及び論理回路であり、どの機能の部分を論理回路で実装するかは任意である。
【００５３】
図６に示す構成や、図５に示す処理は、移動通信端末用のプロセッサが、ダウンロードファイルの管理及び実行を制御するためにダウンロードプログラムファイル管理用プログラムを実行することで実現できる。このダウンロードプログラムファイル管理用プログラムは、例えば移動通信端末のＲＯＭに格納しておくようにしてもよい。
【００５４】
このダウンロードプログラムファイル管理用プログラムは、前記移動通信端末を動作させる指令として、下記の指令を備える。この指令は、図５に示す各工程や、図６に示す各制御部及び各機能と対応している。
プロセッサで直接実行できる機械語コードと、少なくとも当該機械語コードのマジックコード、チェックサム及びアプリケーションＩＤとを格納するヘッダとを有する特定のデータ構造のプログラムファイルをダウンロードすると共に、前記メモリに格納する第１指令。この第１指令は、図５のステップＳ５１２等に対応し、図６のダウンロード制御部１１に対応する。
プログラムファイルのヘッダに含まれる所定のデータを用いて、当該ファイルの信頼性及び/又は有効性を検証させる第２指令。この第２指令は、図５のステップＳ５１２，５１３に対応し、図６の有効性検証機能１４及び信頼性検証機能１５に対応する。第２指令は、実際のファイル容量とアプリケーションＩＤとを使用した所定の編集をプロセッサにさせる指令を備えるようにしても良い。
前記第２指令に応じて有効性及び/又は信頼性が検証される場合に限って、当該プログラムファイルの機械語コードをメモリ３にロードし或いはプロセッサ４が直接にアクセスして、当該プログラムファイルの機械語コードを実行させる第３指令。この第３指令は、図５のステップＳ５１６，５１７及び５１８に対応し、図６の実行ビュー生成部１７，リソースデータ読込制御部１８及び実行部４に対応する。従って、第３指令は、より詳細な指令として、プロセッサ４に実行ビューを生成させる実行ビュー生成指令を備えるようにしても良い。
【００５５】
【発明の効果】
以上述べたように、本発明に係るファイル構造方法及び端末によれば、ファイルの実行領域を、端末によって直接実行可能な機械語コードで構成することにより、次のような利点を有する。
機械語コードは、バイトコード基盤のプログラム（ファイル）に比べてサイズが小さくてダウンロードに必要な時間が短縮され、ダウンロードしたファイルを格納するためのメモリ空間も小さくなる。
また、機械語コードは、プロセッサによって直接実行が可能なので、バイトコード基盤のプログラムに比べて実行速度が速い。通常、機械語プログラムコードはコンパイルまたは変換（インタラプト）の必要なプログラムより約８〜２０倍程度が速い。
また、リソース領域をプログラムの実行領域と分離し、容易な多国語支援のために言語別データの集合を区分して構成することにより、実行時に必要なデータのみをメモリにロードして使用することができ、よって、実行時にかかるメモリ要求量を減少させることができる。
ダウンロードに必要な時間が短く、実行が高速で、メモリ要求量が少ないため容量の大きいメモリを移動通信端末に装備する必要がないことから、本発明では、バッテリの連続稼働時間を短縮させずに、プログラムファイルのダウンロード機能を移動通信端末に付加することができる。特に、バイトコード基盤の仮想端末となる移動通信端末と比較して、実行速度及びメモリ空間との関係から、バッテリの必要な充電回数を少なくし、連続して稼働できる時間を相対的に長くすることができる。
ファイルのヘッダを用いることにより、ファイルの有効性の検証を行うことができ、使用を制限し或いは自動アップデートを可能にする。特に、本発明では、マジックコードが、前記実行部の論理演算命令を使用した場合と同一の論理演算結果となる論理演算を用いて、前記アプリケーションＩＤとチェックサムとに論理演算をした論理演算値であって、有効性検証機能が、前記実行指令が入力された時に、当該プログラムファイルのヘッダの前記アプリケーションＩＤと前記チェックサムとに前記実行部の論理演算をし、前記プログラムファイルのヘッダのマジックコードと当該論理演算結果とを比較して、一致した際に有効性有りとするため、ヘッダの情報と、移動通信端末が実行できる論理演算とにより、メーカーやキャリアがアプリケーションＩＤやマジックナンバーのデータ構造を工夫することで、悪意のあるプログラマから移動通信端末を保護しつつ、事後的な機械語コードのプログラムの更新や導入をすることができる。
このように、本発明によると、ファイルのヘッダの各フィールドを用いることで多様な機能を実現しつつ、機械語コード実行による利点を、移動通信端末で実現することができる。
【図面の簡単な説明】
【図１】従来の移動通信端末用ファイルの内部構成を示す図である。
【図２】本発明に使用される移動通信端末用ファイルの内部構成を示す図である。
【図３】本発明に使用される端末用ファイルのヘッダ部分に対する詳細図である。
【図４】本発明に使用される端末用ファイルのリソース領域に対する詳細図である。
【図５】本発明に係る端末用ファイルのダウンロード及び実行過程を示すフローチャートである。
【図６】本発明に係る端末用ファイルを実行する移動通信端末の機能構成を示すブロック図である。
【符号の説明】
１  無線通信部
２  表示部
３  メモリ
４  プロセッサ（実行部）
１０  ダウンロードプログラムファイル制御部
１１  ダウンロード制御部
１２  更新制御部
１３  実行制御部
１４  有効性検証機能
１５  信頼性検証機能
１６  使用制限機能
１７  実行ビュー生成部
１８  リソースデータ読込制御部
【図１】
0003824580.tif 000004
【図２】
0003824580.tif 000005
【図３】
0003824580.tif 000006
【図４】
0003824580.tif 000007
【図５】
0003824580.tif 000008
【図６】
0003824580.tif 000009