"ターゲットコードを実行前にホストコードに変換するターゲットコード事前変換方法であって、前記ターゲットコードを、分岐命令もしくは分岐命令からの流入が起こらない命令群の最小単位である基本ブロックに分割し、前記基本ブロックごとに、前記ターゲットコードの命令を解析し、レジスタからの読み込み命令、レジスタへの書き込み命令、メモリからの読み込み命令、メモリへの書き込み命令および算術論理命令を検出した場合には、当該命令に対応するノードや辺とするとともに、あるレジスタにロードされる値の、他のレジスタや直値あるいはメモリ内容との依存関係を表現した依存グラフを作成し、メモリへの読み書きアクセスがあった際に利用され、メモリ読み込み内容及びメモリ書き込み内容とアドレス値とを対応づけるメモリ参照テーブルを作成し、前記依存グラフと前記メモリ参照テーブルを連携させ、分岐命令の事前変換に際し、飛び先アドレスとして可能性のある全てのアドレス値をエントリポイントとしてリスト化するターゲットコード事前変換方法。前記ターゲットコードを1命令づつデータの集合体に変換して命令を解析した後、アーキテクチャ非依存の中間コードを生成する請求項1記載のターゲットコード事前変換方法。前記ターゲットコードに対応する前記中間コードについて、ホストコードに変換する請求項1記載のターゲットコード事前変換方法。前記依存グラフにおける前記依存関係は、命令の実行順序により、実行結果が変化する可能性が有る関係である請求項1記載のターゲットコード事前変換方法。前記依存グラフの作成において、レジスタ値を利用する側の命令、分岐命令、条件判定命令、制御命令のいずれかの命令では、ノードあるいは辺を作成しない請求項1記載のターゲットコード事前変換方法。前記メモリ参照テーブルは、前記ターゲットコードからメモリへの書き込みがあった場合には、書き込んだ値とデータ長から成るメモリ書き込みリストにメモリへのアクセスを記録し、前記ターゲットコードが行うメモリからの読み込みがあった場合には、データ長と依存グラフの始点及びターゲット頂点から成るメモリ読み込みリストにメモリへのアクセスを記録する請求項1記載のターゲットコード事前変換方法。前記依存グラフと前記メモリ参照テーブルの連携は、前記ターゲットの命令解析時にメモリへの書き込みあるいは読み込みアクセスがあった場合、前記メモリ参照テーブルへの記録を行う際、前記メモリ参照テーブルにすでに記録された全てのメモリへの書き込みあるいは読み込みアクセスを走査し、前記依存グラフを含んでいれば、当該前記依存グラフを再度探索する請求項1記載のターゲットコード事前変換方法。請求項3項記載のターゲットコード事前変換方法で得られたホストコードをロードして使用するエミュレーション方法。本発明が解決しようとする課題は、事前変換する際の飛び先アドレスの事前予測を効率的に行えるターゲットコード事前変換方法及びエミュレーション方法を提供することである。実施形態のターゲットコード事前変換方法は、前記ターゲットコードを、分岐命令もしくは分岐命令からの流入が起こらない命令群の最小単位である基本ブロックに分割し、前記基本ブロックごとに、前記ターゲットコードの命令を解析し、レジスタからの読み込み命令、レジスタへの書き込み命令、メモリからの読み込み命令、メモリへの書き込み命令および算術論理命令を検出した場合には、当該命令に対応するノードや辺とするとともに、あるレジスタにロードされる値の、他のレジスタや直値あるいはメモリ内容との依存関係を表現した依存グラフを作成し、メモリへの読み書きアクセスがあった際に利用され、メモリ読み込み内容及びメモリ書き込み内容とアドレス値とを対応づけるメモリ参照テーブルを作成し、前記依存グラフと前記メモリ参照テーブルを連携させ、分岐命令の事前変換に際し、飛び先アドレスとして可能性のある全てのアドレス値をエントリポイントとしてリスト化する。以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。第1の実施形態まず、本実施形態で用いる主要な用語について説明する。QEMUとは、異なるコンピュータアーキテクチャをソフトウェア的に模擬することができるエミュレータをいう。ターゲットコードとは、QEMU上で動作させる、変換対象となるコードをいう。ホストコードとは、QEMUが動作しているCPUにて解釈および実行ができるコードをいう。基本ブロックとは、仮想化環境上で動作させたいターゲットコードにおいて、分岐命令もしくは分岐命令からの流入が起こらない命令群の最小単位をいう。基本ブロックの開始点には、他のコードからジャンプすることができる。基本ブロックの終了点は、他のコードへのジャンプ命令あるいはジャンプの一つ前の命令である。エントリポイントとは、基本ブロックの実行を開始するアドレスをいう。分岐命令の飛び先はエントリポイントである。本実施形態に係るターゲットコード事前変換方法は、分岐命令の事前変換に際し、飛び先アドレスとして可能性のある全てのアドレス値をエントリポイントとしてリスト化しておくものである。図1は、本実施形態に係るターゲットコード事前変換方法が適用されるターゲットコード変換装置の構成例を示す図である。ターゲットコード変換装置100は、変換対象となるターゲットコードを読み込み、変換および実行するための装置である。ターゲットコード変換装置100は、ターゲットコード格納部200、ホストコード格納部300と接続している。ターゲットコード変換装置100は、例えば、ターゲットコードロード部10、エントリポイントロード部11、ターゲットコードパース部12、中間コード生成部13、基本ブロック分割部14、依存グラフ作成部15、中間コード格納部16、ホストコード生成部17、依存グラフ評価部18、メモリ参照テーブル読み込みアクセス登録部19、書き込み値評価部20、メモリ参照テーブル書き込みアクセス登録部21、依存グラフ再評価部22、依存グラフ格納部23、メモリ参照テーブル格納部24、エントリポイント確定部25、エントリポイント格納部26から構成されている。このうち、ターゲットコードロード部10、エントリポイントロード部11、ターゲットコードパース部12、中間コード生成部13、基本ブロック分割部14、依存グラフ作成部15、ホストコード生成部17、依存グラフ評価部18、メモリ参照テーブル読み込みアクセス登録部19、書き込み値評価部20、メモリ参照テーブル書き込みアクセス登録部21、依存グラフ再評価部22、エントリポイント確定部25の各部は、例えば各処理プログラムの形態として構築することができる。まず、各部を簡潔に説明する。ターゲットコードロード部10は、ターゲットコードの実行形式イメージファイルをターゲットコード変換装置100に読み込み、メモリ上に展開するものである。エントリポイントロード部11は、ターゲットコード内で、次に変換対象となる基本ブロックの開始位置エントリポイントをロードする。エントリポイントがなくなるまで順次エントリポイントをロードする。ターゲットコードパース部12は、エントリポイントロード部11からロードしたエントリポイントから始まるターゲットコードを1命令ずつパース構文解析などによりデータの集合体に変換し、命令の意味を解析するものである。中間コード生成部13は、ターゲットコードパース部12で解析された命令について、ターゲットコード変換装置100内部のみで通用するアーキテクチャ非依存のコード中間コードを生成するものである。基本ブロック分割部14は、ターゲットコードパース部12で解析しているターゲットコードについて、分岐命令や特殊レジスタ値の有無を確認し、基本ブロックに分割するものである。依存グラフ作成部15は、ターゲットコードパース部12で解析された命令について、レジスタ/メモリのロードストア命令および算術論理命令が発見された際に、その命令1つに対応する依存グラフのノードや辺を作成するものである。依存グラフの詳細は、後述する。中間コード格納部16は、中間コード生成部13で生成された中間コードを一時的に格納するものである。ホストコード生成部17は、基本ブロック分割部14において分割されたターゲットコードに対応する中間コードについて、ホストコードに変換するものである。依存グラフ評価部18は、依存グラフ作成部15において基本ブロック単位で生成された依存グラフについて、次にホストコードへの変換候補とするべきターゲットコードのエントリポイントを求めるために依存グラフのノードを探索するものである。メモリ参照テーブル読み込みアクセス登録部19は、依存グラフ作成部15において、メモリからの読み込みアクセスメモリからのロードを発見した際に、メモリ参照テーブルへその読み込みおよび対応する依存グラフを登録するものである。メモリ参照テーブルは、メモリへの読み書きアクセスメモリからのロード、ストアがあった際に利用される、メモリ読み込み書き込み内容とアドレス値とを対応づけるテーブルである。書き込み値評価部20は、メモリ参照テーブルに書き込みアクセスとして登録された値について、読み込みアクセス側の依存グラフを評価するものである。メモリ参照テーブル書き込みアクセス登録部21は、依存グラフ作成部15において、メモリへの書き込みアクセスメモリへのストア命令を発見した際に、メモリ参照テーブルへその書き込みを登録するものである。依存グラフ再評価部22は、メモリ参照テーブル読み込みアクセス登録部19において、メモリ参照テーブルに登録した依存グラフを再評価するものである。依存グラフ格納部23は、依存グラフを格納するものである。メモリ参照テーブル格納部24は、メモリ参照テーブルを格納するものである。エントリポイント確定部25は、依存グラフ評価部18、依存グラフ再評価部22、書き込み値評価部20において候補値として確定したジャンプ先アドレスをエントリポイントとして確定するものである。エントリポイント格納部26は、確定したエントリポイントを格納するものである。次に、以上のように構成されたターゲットコード変換装置100によるターゲットコード変換方法について説明する。本実施形態に係るターゲットコード事前変換方法は、1依存グラフの作成、2メモリ参照テーブルの作成、3依存グラフとメモリ参照テーブルの連携の3つの処理を行うことにより、効率的な事前変換の飛び先アドレス推定と飛び先を事前に蓄えておくものである。具体的には、レジスタへのロードを伴う処理,メモリのロード命令,ストア命令を監視し、登録するデータ構造を新規に作成することで、対象レジスタ又はメモリに書き込まれた可能性のある値を全て取り出せるようにする。依存グラフの作成次に、依存グラフの作成について説明する。図2は、依存グラフの作成を説明する図である。ここで、依存グラフとは、あるレジスタにロードされる値の、他のレジスタや直値あるいはメモリ内容との依存関係を表現したグラフをいう。また、依存関係とは、実行順序により、実行結果が変化する可能性が有る関係をいう。依存グラフは、基本ブロック一つにつき、一つ作成する。基本ブロックは、分岐命令や特殊レジスタ値の有無によって基本ブロック分割部14で分割される。依存グラフは、レジスタへの値のロードが発生するたび、すなわち、ロード命令,ストア命令,算術論理命令の度にノードを作成する。依存グラフでは、値のロードに依存するレジスタ及び直値のノードに向けての有向辺を作成していく。図2では、ターゲットコードが、movax,0x4000movcx,2addax,cxの場合を示している。まず、mov命令として、axレジスタに、直値0x4000を持ってくるので、axレジスタのノードから直値を管理する直値リストのノードに向かう有向辺が描かれている。すなわち、矢印→はaxレジスタが直値0x4000に依存している関係を表わしている。同様に、mov命令として、cxレジスタに、直値2を持ってくるので、cxレジスタのノードから直値を管理する直値リストのノードに向かう有向辺が描かれている。次に、add命令として、axレジスタの値とcxレジスタの値の和を、新たなaxレジスタの値とするので、新たなaxレジスタのノードから、前のaxレジスタのノード及びcxレジスタのノードに向かう有向辺が描かれている。すなわち、新たなaxレジスタは、前のaxレジスタの値及びcxレジスタの値に依存している関係が表わされている。グラフノード管理リストは、各レジスタが依存グラフ作成過程でどのような値をとっていったかを把握するもので、各レジスタのグループを管理するリストである。グラフノード管理リストによれば、最新のレジスタの値が直ちにわかる。依存グラフの作成に関して、ノードあるいは辺を作成する命令は、ロード命令,ストア命令mov命令,算術論理演算命令add命令sub命令and命令or命令xor命令などである。一方、ノードあるいは辺を作成しない命令は、レジスタ値を利用する側の命令、もしくは分岐命令そのもので、条件判定文cmp命令jcc命令やret命令iret命令hlt命令などの制御命令である。これは、制御命令の場合、戻りアドレスは呼び出し側が知っているからである。依存グラフの探索次に、依存グラフの探索によるジャンプ先アドレスの特定について説明する。図3は、依存グラフの探索を説明する図である。ジャンプ先のアドレスを特定するには、基本ブロック内で、間接アドレス指定が出現したとき、そのアドレス指定に使用するレジスタについての最新のノードに注目する。すなわち、注目したノードを依存グラフの始点として、有向グラフをたどっていく。ターゲットコード上では、命令を逆走していくことになる。探索は、深さ優先探索をしていき、最終的に残った値をジャンプ先アドレスとする。図3に示す例では、ターゲットコードが、jmpaxの場合を示している。最新のaxレジスタは、次のジャンプ先アドレスを決定するレジスタであるが、依存グラフから前のaxレジスタ、cxレジスタに依存していることがわかる。さらに、前のaxレジスタ値は、有向グラフをたどっていくことにより、その値を特定することができる。ここの例では、直値0x4000である。同様に、cxレジスタ値は、有向グラフをたどっていくことにより、その値を特定することができる。ここの例では、直値2である。よって、最新のaxレジスタ値は、0x4002と特定することができる。このようにして、依存グラフを探索することにより、次のジャンプ先のアドレスが特定するが、依存グラフだけでは、次のジャンプ先のアドレスが特定できないケースがある。メモリへのアクセスがジャンプ先のアドレスの特定に影響する場合である。図4は、メモリへのアクセスがジャンプ先のアドレスの特定に影響する場合を説明する図である。図4では、ターゲットコードが、movax,0x4000movcx,2addax,cxjmpaxの場合を示している。図4に示す例では、最新のaxレジスタは、次のジャンプ先アドレスを決定するレジスタ始点で、依存グラフから前のaxレジスタ、cxレジスタに依存していることがわかる。cxレジスタ値は、有向グラフをたどっていくことにより、その値を特定することができる。ここの例では、直値2として確定する。一方、前のaxレジスタ値は、有向グラフをたどっていくことにより、その値を特定したいが、直値として管理されているのは、アドレス値としての0x4000である。したがって、依存グラフの探索だけでは、次のジャンプ先のアドレスを確定することができない。メモリ参照テーブルの作成次に、メモリ参照テーブルの作成について説明する。図5は、メモリ参照テーブルの作成を説明する図である。上述のように、メモリへのアクセスがジャンプ先のアドレスの特定に影響する場合には、メモリ参照テーブルを利用する。メモリ参照テーブルは、基本ブロック内で、メモリの参照メモリへのアクセスが行われた場合に、そのことを記録するために作成されるものである。具体的には、ターゲットコードパース部12において、依存グラフ作成中に次の命令セットを発見した場合、依存グラフ作成部15が作成する。メモリからのロード命令メモリ参照テーブルは、ターゲットコードからメモリへの書き込みがあった場合には、メモリ書き込みリストにメモリへのアクセスを記録する。メモリ書き込みリストの要素としては、書き込んだ値とデータ長である。図5は、メモリ書き込みリストに、書き込んだ値とデータ長が1組となって、リストに加えられていくことを表わしている。同様に、ターゲットコードが行うメモリからの読み込みがあった場合には、メモリ読み込みリストにメモリへのアクセスを記録する。メモリ読み込みリストの要素としては、データ長と依存グラフの始点及びターゲット頂点である。図5は、メモリ読み込みリストに、データ長と依存グラフの始点及びターゲット頂点が1組となって、リストに加えられていくことを表わしている。図5に示す例では、メモリアドレスについては、ターゲットコードのアクセス先アドレスに従い、テーブル要素へポイントする、言わばページテーブルに似た構造でメモリアドレスを管理している。メモリアドレスを上位ビット,下位ビットと分けて、ターゲットコードが扱える最大データ長分は、同じテーブル要素となるようにするのが好適である。依存グラフとメモリ参照テーブルの連携次に、依存グラフとメモリ参照テーブルの連携について説明する。図6乃至図8は、依存グラフとメモリ参照テーブルの連携について説明する図である。図6では、メモリからの読み込みを伴うことが、パース時に判明した場合、依存グラフとメモリ参照テーブルの連携を行うことを説明している。メモリからの読み込みを伴う場合には、メモリ参照テーブルの読み込みリストに、データ長とともに、依存グラフの始点ノード及びターゲットノードの組を、新規分として作成する。図6では、メモリ参照テーブルにメモリアドレス値として0x4000を登録するとともに、0x4000に対応する要素として、メモリ参照テーブルのメモリ読み込みリストにデータ長、依存グラフの始点ノード及びターゲットノードの組を、記録することを表わしている。係るメモリ参照テーブルへの記録をもって、一旦、依存グラフの評価は終了する。図7では、メモリへの書き込みが、主に別の基本ブロック内の命令パース中に判明した場合、依存グラフとメモリ参照テーブルの連携を行うことを説明している。メモリへの書き込みを伴う場合には、メモリ参照テーブルの書き込みリストに、書き込んだ値及びデータ長の組を、新規分として作成する。読み込みリストの全要素を考慮しつつ、依存グラフを再度評価する。図7に示す例では、ターゲットコードが、movax,0x2000mov0x4000,axの場合、メモリ参照テーブルにメモリアドレス値として0x4000を登録するとともに、0x4000に対応する要素として、メモリ参照テーブルのメモリ書き込みリストに、アドレス0x4000、値0x2000及びデータ長を、記録することを表わしている。図8に示す例では、ターゲットコードが、movax,0x4000movcx,2addax,cxjmpaxの場合を示している。読み込みリストの全要素を考慮しつつ、ノードをたどることによって、依存グラフを再度評価する。図8に示す例では、メモリアドレス値0x4000が未確定であったものが、メモリ書き込みリストに追加された値=0x2000であるとして確定する。したがって、始点ノードとして0x2002という結果が得られる。得られたジャンプ先アドレスは、新たなエントリポイントとして、エントリポイントリストに追加して記録される。図9は、本実施形態に係るターゲットコード変換方法の一連の流れを模式化した図である。まず、ターゲットコード格納部200から、ターゲットコードロード部10によってターゲットコードをロードする。続いて、エントリポイント格納部26から、エントリポイントロード部11によってエントリポイントをロードする。ターゲットコード変換の初期段階では、マシン毎に所定の初期アドレス値のみが、エントリポイント格納部26に格納されている。続いて、ターゲットコードパース部12によって、命令解釈される。次に、ターゲットコードは基本ブロック分割部14で、基本ブロックに分割される。分割後、中間コード生成部13での中間コードの生成と、依存グラフ作成部15での依存グラフの作成が並行して行われる。生成された中間コードは、一旦、中間コード格納部16に格納される。中間コード格納部16に格納された中間コードは、ホストコード生成部17に送られ、ホストコードが生成される。作成された依存グラフは、一旦、依存グラフ格納部23に格納される。依存グラフの作成に際して、メモリからの読み込みアクセスが有る場合には、メモリ参照テーブル読み込みアクセス登録部19によって、メモリ参照テーブル格納部24へその読み込み及び対応する依存グラフを登録する。メモリ参照テーブルには、メモリ読み込み内容とアドレス値とを対応づけるテーブルが記録されているので、書き込み値評価部20ではメモリ参照テーブルに書き込みアクセスとして登録された値について読み込みアクセス側の依存グラフを評価する。書き込み値評価部20での評価は、ジャンプ先アドレスの候補値としてエントリポイント確定部25で確定することによりエントリポイントとしてエントリポイント格納部26に新規登録される。一方、メモリへの書き込みが有る場合には、メモリ参照テーブル書き込みアクセス登録部21によって、メモリ参照テーブル格納部24へその書き込みを登録する。続いて、依存グラフ再評価部22によって、メモリ参照テーブル読み込みアクセス登録部19においてメモリ参照テーブルに登録した依存グラフを再評価する。依存グラフ再評価部22での評価は、ジャンプ先アドレスの候補値としてエントリポイント確定部25で確定することによりエントリポイントとしてエントリポイント格納部26に新規登録される。さらに、依存グラフに間接アドレス指定が有る場合には、依存グラフ評価部18において、次にホストコードへの変換候補とするべきターゲットコードのエントリポイントを求めるために依存グラフのノードを探索する。探索結果は、ジャンプ先アドレスの候補値としてエントリポイント確定部25で確定することによりエントリポイントとしてエントリポイント格納部26に新規登録される。このようにして、ターゲットコードを事前変換することにより、基本ブロックと全てのエントリポイントのリストが関係付けられて得られる。本実施形態によれば、安定した応答性能及びリアルタイム性を高めたCPUエミュレーションを実現することができるので、組み込み機器のような実行時間に制限制約を持つプロセスや製品でも実行性能の品質保証が得られるようになる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"