(57)【要約】【課題】ターゲットＣＰＵの動作をホストＣＰＵ上で支障なく、シミュレーションできるようにすることを目的とする。【解決手段】ターゲットＣＰＵの命令コードを有するバイナリデータを読み込む読込手段２００と、読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを変換して変換コードを生成する命令変換手段３００と、変換コードを保持する変換コード保持手段５００と、ターゲットＣＰＵの命令コードと変換コードとのいずれかを所定の基準により実行することでシミュレーション対象となるターゲットＣＰＵの動作をシミュレーションする実行手段６００とを備えたことを特徴とする。【選択図】        図１
2004185527.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ
Ｕｎｉｔ）の命令コードを有するバイナリデータを読み込む読込手段と、
上記読込手段により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを変換して変換コードを生成する命令変換手段と、
上記命令変換手段により生成された変換コードを保持する変換コード保持手段と、
上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードと上記変換コード保持手段により保持された変換コードとのいずれかを所定の基準により実行することでシミュレーション対象となるターゲットＣＰＵの動作をシミュレーションする実行手段と
を備えたことを特徴とするシミュレーション装置。
【請求項２】
上記実行手段は、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを入力し、入力された命令コードを解釈し、解釈された命令コードを実行するターゲットＣＰＵ命令コード実行手段と、
上記変換コード保持手段により保持された変換コードを実行する変換コード実行手段と
を有することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
上記シミュレーション装置は、さらに、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードのアドレスと上記変換コード保持手段により保持された変換コードのアドレスとを対応させた対応テーブルを保持するテーブル保持手段とを備え、
上記実行手段は、上記テーブル保持手段により保持された対応テーブルに基づいて、シミュレーション対象となるターゲットＣＰＵの命令コードに対応する変換コードを入力し、入力された変換コードを実行することを特徴とする請求項１記載のシミュレーション装置。
【請求項４】
上記シミュレーション装置は、さらに、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードのアドレスと上記変換コード保持手段により保持された変換コードのアドレスとを対応させた対応テーブルを保持するテーブル保持手段とを備え、
上記実行手段は、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されているかどうかを判定する判定手段を有することを特徴とする請求項１記載のシミュレーション装置。
【請求項５】
上記実行手段は、上記判定手段により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていないと判定された場合に、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行し、上記判定手段により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていると判定された場合に、上記変換コード保持手段により保持された変換コードを所定の基準により実行することを特徴とする請求項４記載のシミュレーション装置。
【請求項６】
上記判定手段は、上記命令変換手段により変換された変換コードのエリアの開始アドレスと終了アドレスとを保持する変換エリア情報保持手段と、
上記テーブル保持手段により保持された対応テーブルを検索し、上記命令変換手段により変換された変換コードのエリアの開始アドレスと終了アドレスとを抽出し、上記変換エリア情報保持手段に上記開始アドレスと終了アドレスとを設定する変換エリア情報設定手段と、
上記変換エリア情報保持手段により保持された開始アドレスと終了アドレスとを読み出し、次にターゲットＣＰＵが実行する命令コードの命令アドレスの値が上記開始アドレスの値と終了アドレスの値との間に含まれているかどうかを比較する比較手段と
を有することを特徴とする請求項４記載のシミュレーション装置。
【請求項７】
上記判定手段は、上記命令変換手段により変換された変換コードのエリアの開始アドレスと変換コードの変換長さとを保持する変換エリア情報保持手段と、
上記テーブル保持手段が保持する上記対応テーブルを検索し、上記命令変換手段により変換された変換コードのエリアの開始アドレスと変換コードの変換長さを抽出し、上記変換エリア情報保持手段に上記開始アドレスと変換コードの変換長さとを設定する変換エリア情報設定手段と、
上記変換エリア情報保持手段により保持された開始アドレスと変換コードの変換長さとを読み出し、次にターゲットＣＰＵが実行する命令コードの命令アドレスの値が上記開始アドレスの値と上記開始アドレスに変換コードの変換長さを加算した値の間に含まれているかどうかを比較する比較手段と
を有することを特徴とする請求項４記載のシミュレーション装置。
【請求項８】
上記読込手段は、ヘッダー情報を有する上記バイナリデータを入力し、
上記読込手段は、
上記命令変換手段により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記命令変換手段に指示するために出力する変換エリア情報指示手段と、
上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記変換エリア情報指示手段に設定させるため出力する変換エリア情報設定手段と
を有し、
上記命令変換手段は、上記変換エリア情報指示手段により出力された開始アドレスと終了アドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換することを特徴とする請求項１記載のシミュレーション装置。
【請求項９】
上記バイナリデータは、メモリ管理を行うメモリ管理テーブルを有し、
上記読込手段は、
上記命令変換手段により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記命令変換手段に指示するために出力する変換エリア情報指示手段と、
上記メモリ管理テーブルから変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記変換エリア情報指示手段に設定させるために出力する変換エリア情報設定手段と
を有し、
上記命令変換手段は、上記変換エリア情報指示手段により出力された開始アドレスと終了アドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換することを特徴とする請求項１記載のシミュレーション装置。
【請求項１０】
上記読込手段は、ヘッダー情報を有する上記バイナリデータを入力し、
上記読込手段は、
上記命令変換手段により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記命令変換手段に指示するために出力する変換エリア情報指示手段と、
上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記変換エリア情報指示手段に設定させるために出力する変換エリア情報設定手段と
を有し、
上記命令変換手段は、上記変換エリア情報指示手段により指示された開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換することを特徴とする請求項１記載のシミュレーション装置。
【請求項１１】
上記バイナリデータは、メモリ管理を行うメモリ管理テーブルを有し、
上記読込手段は、
上記命令変換手段により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記命令変換手段に指示するために出力する変換エリア情報指示手段と、
上記メモリ管理テーブルから変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記変換エリア情報指示手段に設定させるために出力する変換エリア情報設定手段と
を有し、
上記命令変換手段は、上記変換エリア情報指示手段により出力された開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換することを特徴とする請求項１記載のシミュレーション装置。
【請求項１２】
上記読込手段は、ヘッダー情報を有する上記バイナリデータを入力し、
上記読込手段は、
上記命令変換手段により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記命令変換手段に指示するために出力する変換エリア情報指示手段と、
上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記変換エリア情報指示手段に設定させるために出力する変換エリア情報設定手段と
を有し、
上記判定手段は、上記変換エリア情報指示手段により保持された開始アドレスと終了アドレスとを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスとの間に含まれているかどうかを比較する比較手段を有することを特徴とする請求項４記載のシミュレーション装置。
【請求項１３】
上記判定手段は、上記比較手段により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスとの間に含まれている場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されているかどうかを判定し、上記比較手段により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスとの間に含まれていない場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていないと判定することを特徴とする請求項１２記載のシミュレーション装置。
【請求項１４】
上記実行手段は、上記判定手段により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていないと判定された場合に、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行し、上記判定手段により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていると判定された場合に、上記変換コード保持手段により保持された変換コードを所定の基準により実行することを特徴とする請求項１３記載のシミュレーション装置。
【請求項１５】
上記読込手段は、ヘッダー情報を有する上記バイナリデータを入力し、
上記読込手段は、
上記命令変換手段により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記命令変換手段に指示するために出力する変換エリア情報指示手段と、
上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記変換エリア情報指示手段に設定させるために出力する変換エリア情報設定手段と
を有し、
上記判定手段は、上記変換エリア情報指示手段により保持された開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間に含まれているかどうかを比較する比較手段を有することを特徴とする請求項４記載のシミュレーション装置。
【請求項１６】
上記判定手段は、上記比較手段により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間に含まれている場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されているかどうかを判定し、上記比較手段により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間に含まれていない場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていないと判定することを特徴とする請求項１５記載のシミュレーション装置。
【請求項１７】
上記実行手段は、上記判定手段により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていないと判定された場合に、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行し、上記判定手段により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段により保持された対応テーブルに格納されていると判定された場合に、上記変換コード保持手段により保持された変換コードを所定の基準により実行することを特徴とする請求項１６記載のシミュレーション装置。
【請求項１８】
上記ターゲットＣＰＵは、システムメモリを有し、
上記命令変換手段は、上記読込手段により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを上記ターゲットＣＰＵのシステムメモリのページ単位で変換して命令列を生成し、
上記変換コード保持手段は、上記命令変換手段により生成された命令列を保持し、
上記シミュレーション装置は、さらに、
上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵのシステムメモリのページアドレスと上記変換コード保持手段により保持された命令列のアドレスとを対応させた対応テーブルを保持するページポインタテーブル保持手段と、
上記変換コード保持手段により保持された命令列が有効な命令列か無効な命令列かの有効／無効情報を保持する有効／無効情報保持手段と
を備え、
上記実行手段は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在するページアドレスに対応する命令列を上記ページポインタテーブル保持手段から抽出し、上記有効／無効情報保持手段により保持された有効／無効情報に基づいて上記抽出された命令列が有効である場合に、上記変換コード保持手段により保持された命令列の中からターゲットＣＰＵが実行する命令コードに対応する変換コードを実行し、上記有効／無効情報保持手段により保持された有効／無効情報に基づいて上記抽出された命令列が無効である場合に、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行することを特徴とする請求項１記載のシミュレーション装置。
【請求項１９】
上記バイナリデータは、所定のメモリ容量を１ページとする論理ページの論理ページアドレスを有し、
上記ターゲットＣＰＵは、システムメモリを有し、上記論理ページアドレスと上記論理ページアドレスに対応する上記システムメモリのページアドレスである物理ページアドレスとを記憶し、
上記シミュレーション装置は、さらに、
上記ターゲットＣＰＵに記憶された論理ページアドレスと上記論理ページアドレスに対応する物理ページアドレスと上記変換コード保持手段により保持された命令列のアドレスとを対応させて保持するページアドレス変換バッファ保持手段を備え、
上記実行手段は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段から検索し、一致する上記論理ページアドレスが検索された場合に、上記次にターゲットＣＰＵが実行する命令コードのアドレスが存在するページアドレスに対応する命令列を上記ページポインタテーブル保持手段から抽出することを特徴とする請求項１８記載のシミュレーション装置。
【請求項２０】
上記ターゲットＣＰＵは、上記論理ページアドレスと上記論理ページアドレスに対応する上記物理ページアドレスとを相互に変換し、
上記実行手段は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段により対応させられて保持された論理ページアドレスと物理ページアドレスと命令列のアドレスとから検索し、一致する上記論理ページアドレスが検索されない場合に、ページアドレス変換バッファ保持手段に次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスに対応する物理ページアドレスを上記ターゲットＣＰＵから入力させ、ページアドレス変換バッファ保持手段に入力させられた物理ページアドレスと上記論理ページアドレスと上記変換コード保持手段により保持された命令列のアドレスとを対応させて保持させ、再度、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段から検索することを特徴とする請求項１９記載のシミュレーション装置。
【請求項２１】
上記バイナリデータは、所定のメモリ容量を１ページとする論理ページの論理ページアドレスを有し、
上記ターゲットＣＰＵは、システムメモリを有し、上記論理ページアドレスと上記論理ページアドレスに対応する上記システムメモリのページアドレスである物理ページアドレスとを記憶し、
上記命令変換手段は、上記読込手段により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを上記ターゲットＣＰＵのシステムメモリのページ単位で変換して命令列を生成し、
上記変換コード保持手段は、上記命令変換手段により生成された命令列を保持し、
上記シミュレーション装置は、さらに、
上記ターゲットＣＰＵに記憶された論理ページアドレスと上記論理ページアドレスに対応する物理ページアドレスと上記変換コード保持手段により保持された命令列のアドレスとを対応させて保持するページアドレス変換バッファ保持手段を備え、
上記実行手段は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段により対応させられて保持された論理ページアドレスと物理ページアドレスと命令列のアドレスとから検索し、
上記シミュレーション装置は、さらに、
上記実行手段により次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスがページアドレス変換バッファ保持手段から検索されない場合に、上記実行手段に上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行させる識別情報を保持し、上記実行手段により次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスがページアドレス変換バッファ保持手段から検索される場合に、上記実行手段に上記変換コード保持手段により保持された命令列の中からターゲットＣＰＵが実行する命令コードに対応する変換コードを実行させる上記変換コードを保持する実行情報保持手段を有することを特徴とする請求項１記載のシミュレーション装置。
【請求項２２】
上記変換コード保持手段は、上記変換コードを保持するための所定の容量を有し、
上記命令変換手段は、
生成された変換コードの容量が、上記変換コード保持手段の容量を超えたことを検出する容量オーバーフロー検出手段と、
上記容量オーバーフロー検出手段により、変換コードの容量が上記変換コード保持手段の容量を超えたと検出された場合に、上記変換コード保持手段の容量を拡張することを促す容量拡張手段と
を有することを特徴とする請求項１記載のシミュレーション装置。
【請求項２３】
上記シミュレーション装置は、さらに、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードのアドレスと上記変換コード保持手段により保持された変換コードのアドレスとを対応させた対応テーブルを保持するテーブル保持手段とを備え、
上記容量オーバーフロー検出手段は、さらに、上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードのアドレスと上記変換コード保持手段により保持された変換コードのアドレスとを対応させた対応テーブルの容量が、上記テーブル保持手段の容量を超えたことを検出し、
上記容量拡張手段は、さらに、上記容量オーバーフロー検出手段により、対応テーブルの容量が上記テーブル保持手段の容量を超えたと検出された場合に、上記テーブル保持手段の容量を拡張することを促すことを特徴とする請求項２２記載のシミュレーション装置。
【請求項２４】
上記実行手段は、
ターゲットＣＰＵのメモリ更新時に、メモリ更新アドレスを元に上記テーブル保持手段により保持された対応テーブルから、該当アドレスが上記テーブル保持手段により保持されているかを検出するメモリ更新検出手段と、
上記メモリ更新検出手段により該当アドレスが上記テーブル保持手段の対応テーブルに保持されていると検出された場合に、メモリ更新によって、上記有効／無効情報保持手段により保持された有効／無効情報を無効な命令列に更新させる保持更新手段と
を有することを特徴とする請求項１８記載のシミュレーション装置。
【請求項２５】
上記実行手段は、
ターゲットＣＰＵのメモリ更新時に、メモリ更新アドレスを元に上記テーブル保持手段により保持された対応テーブルから、該当アドレスが上記テーブル保持手段により保持されているかを検出するメモリ更新検出手段と、
上記メモリ更新検出手段により該当アドレスが上記テーブル保持手段の対応テーブルに保持されていると検出された場合に、メモリ更新によって、上記実行情報保持手段により保持された上記変換コードを、上記実行手段に上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行させる識別情報に更新させる保持更新手段と
を有することを特徴とする請求項２１記載のシミュレーション装置。
【請求項２６】
上記実行手段は、
ターゲットＣＰＵのメモリ更新時に、メモリ更新アドレスを元に上記テーブル保持手段により保持された対応テーブルから、該当アドレスが上記テーブル保持手段により保持されているかを検出するメモリ更新検出手段と、
上記メモリ更新検出手段により該当アドレスが上記テーブル保持手段の対応テーブルに保持されていると検出された場合に、メモリ更新によって、変換コードを再生成し、再生成された新しい変換コードを上記テーブル保持手段の対応テーブルに再設定する命令再変換手段と
を有することを特徴とする請求項４記載のシミュレーション装置。
【請求項２７】
ターゲットＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の命令コードを有するバイナリデータを読み込む読込工程と、
上記読込工程により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを変換して変換コードを生成する命令変換工程と、
上記命令変換工程により生成された変換コードを記憶装置に保持する変換コード保持工程と、
上記読込工程により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードと上記変換コード保持工程により記憶装置に保持された変換コードとのいずれかを所定の基準により実行することでシミュレーション対象となるターゲットＣＰＵの動作をシミュレーションする実行工程と
を備えたことを特徴とするシミュレーション方法。
【請求項２８】
ターゲットＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の命令コードを有するバイナリデータを読み込む読込処理と、
上記読込処理により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを変換して変換コードを生成する命令変換処理と、
上記命令変換処理により生成された変換コードを記憶装置に保持する変換コード保持処理と、
上記読込処理により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードと上記変換コード保持処理により記憶装置に保持された変換コードとのいずれかを所定の基準により実行することでシミュレーション対象となるターゲットＣＰＵの動作をシミュレーションする実行処理と
をコンピュータに実行させるためのプログラム。
【請求項２９】
ターゲットＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の命令コードを有するバイナリデータを読み込む読込処理と、
上記読込処理により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを変換して変換コードを生成する命令変換処理と、
上記命令変換処理により生成された変換コードを記憶装置に保持する変換コード保持処理と、
上記読込処理により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードと上記変換コード保持処理により記憶装置に保持された変換コードとのいずれかを所定の基準により実行することでシミュレーション対象となるターゲットＣＰＵの動作をシミュレーションする実行処理と
をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、シミュレーション対象となるターゲットＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の動作をホストＣＰＵ上でシミュレーションするＣＰＵシミュレーン方式であって、ターゲットＣＰＵプログラムをホストＣＰＵの命令列に変換し、実行するようにしたＣＰＵシミュレーン方式に関するものである。
【０００２】
【従来の技術】
ターゲットＣＰＵが命令コードとして参照するアドレス領域中に命令コードとして使わないデータが混在していても、それに影響されずに命令コードをシミュレーションの為のホストＣＰＵの命令列に正しく変換し、ターゲットＣＰＵの動作をホストＣＰＵ上で支障なくシミュレートできるようにすることを目的として、以下の手段が記載されている。ホストＣＰＵ上でターゲットＣＰＵの動作をシミュレーションする前段階で、変換手段は、ターゲットＣＰＵが命令コードとして参照するアドレス領域のバイナリデータを命令コードの配置が可能な全ての番地０，１，２，…を基点として命令コードに解釈し、解釈した命令コードを、それをシミュレーションするホストＣＰＵの命令列と、解釈された命令コードの次にターゲットＣＰＵが実行する命令コードのシミュレーションを行うホストＣＰＵの命令列に制御を移す命令列とから構成されたシミュレーション命令列３−１，３−２，３−３，…に変換する。（特許文献１参照）
【０００３】
【特許文献１】
特開平６−３２４８８３号公報
【特許文献２】
特開平１１−２４９９０５号公報
【特許文献３】
特開２００１−５６７６５号公報
【０００４】
【発明が解決しようとする課題】
従来のＣＰＵシミュレーション方式では、ターゲットＣＰＵ命令をホストＣＰＵで命令の取り出し、命令の解釈、命令の実行という逐次処理していては、性能向上できないため、ターゲットＣＰＵ命令を実行する前にホストＣＰＵ命令列に変換し、命令の実行処理のみにすることで高速化を実施している。
また、従来のＣＰＵシミュレーション方式では、オペレーティングシステムのように、ターゲットＣＰＵのプログラムが周辺機器からプログラムをロードして実行するような場合（ＩＰＬ）や、ターゲットＣＰＵプログラム自身がプログラムを生成、または更新するような場合には、更新されたメモリに対応するポインタ参照テーブルがなく、ターゲットＣＰＵ命令のシミュレーションができないという問題点があった。
【０００５】
この発明は、ターゲットＣＰＵのプログラムがプログラムをロード、生成、または更新するような場合でも、ターゲットＣＰＵの動作をホストＣＰＵ上で支障なく、シミュレーションできるようにし、且つ、シミュレーションシステムを小型化、高速化できるようにすることを目的とする。
【０００６】
また、この発明は、ターゲットＣＰＵプログラムを変換した際に設定するポインタ参照テーブル保持手段に巨大なテーブルが必要となりがちであるが、ターゲットＣＰＵプログラムが複数の領域に分割されている場合でも、テーブルの大型化あるいはテーブル検索の速度低下が生じないようにすることを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係るシミュレーション装置は、ターゲットＣＰＵ（ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の命令コードを有するバイナリデータを読み込む読込手段と、
上記読込手段により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを変換して変換コードを生成する命令変換手段と、
上記命令変換手段により生成された変換コードを保持する変換コード保持手段と、
上記読込手段により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードと上記変換コード保持手段により保持された変換コードとのいずれかを所定の基準により実行することでシミュレーション対象となるターゲットＣＰＵの動作をシミュレーションする実行手段と
を備えたことを特徴とする。
【０００８】
【発明の実施の形態】
実施の形態１．
図１は、実施の形態１にかかるＣＰＵシミュレーション装置の構成を示す構成図である。
図２はホストＣＰＵ上で動作するＣＰＵシミュレーン方式のフローチャートを示す図である。
【０００９】
図１において、ＣＰＵシミュレーション装置（シミュレーション装置の一例である）は、読み込み手段２００、命令変換手段３００、ポインタ参照テーブル保持手段４００、変換コード保持手段５００、実行手段６００を備えている。
ターゲットＣＰＵバイナリデータ１００はシミュレーションすべきターゲットＣＰＵの命令コードを含む。
読み込み手段２００はホストＣＰＵ上でターゲットＣＰＵバイナリデータ１００をＣＰＵシミュレータにロードする。言いかえると、読込手段２００は、ターゲットＣＰＵの命令コードを有するバイナリデータを読み込む。
命令変換手段３００は読込手段２００によって読み込まれたターゲットＣＰＵバイナリデータをホストＣＰＵの命令列に変換する。言いかえると、命令変換手段３００は、上記読込手段２００により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを変換して変換コードを生成する。
変換コード保持手段５００は命令変換手段３００によってターゲットＣＰＵ命令をホストＣＰＵ命令列に変換された変換コードを格納する。言いかえると、変換コード保持手段５００は、上記命令変換手段３００により生成された変換コードを保持する。
ポインタ参照テーブル保持手段４００はターゲットＣＰＵのプログラムカウンタと変換コード保持手段５００のポインタの対保持する。言いかえると、テーブル保持手段の一例として、ポインタ参照テーブル保持手段４００は上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードのアドレスと上記変換コード保持手段５００により保持された変換コードのアドレスとを対応させた対応テーブルを保持する。
変換コード実行手段７００は変換された変換コードを実行する。言いかえると、ターゲットＣＰＵ命令コード実行手段の一例である変換コード実行手段７００は、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを入力し、入力された命令コードを解釈し、解釈された命令コードを実行する。
逐次実行手段８００は命令の取り出し、命令の解釈、命令の実行を逐次的に行う。言いかえると、変換コード実行手段の一例として、逐次実行手段８００は、上記変換コード保持手段５００により保持された変換コードを実行する。
判定手段９００はターゲットＣＰＵのプログラムカウンタでポインタ参照テーブル保持手段４００を検索し、有効なポインタが格納されているかを判断し、有効なポインタが格納されている場合に変換コード実行手段７００を起動し、無効なポインタが格納されている、または、ターゲットＣＰＵのプログラムカウンタが格納されていない場合に逐次実行手段８００を起動する。言いかえると、判定手段９００は、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されているかどうかを判定する。
実行手段６００は判定手段９００、変換コード実行手段７００、逐次実行手段８００を具備する。言いかえると、実行手段６００は、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードと上記変換コード保持手段５００により保持された変換コードとのいずれかを所定の基準により実行することでシミュレーション対象となるターゲットＣＰＵの動作をシミュレーションする。実行手段６００は、上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに基づいて、シミュレーション対象となるターゲットＣＰＵの命令コードに対応する変換コードを入力し、入力された変換コードを実行する。実行手段６００は、上記判定手段９００により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていないと判定された場合に、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行し、上記判定手段９００により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていると判定された場合に、上記変換コード保持手段５００により保持された変換コードを所定の基準により実行する。
【００１０】
次に動作について図１と図２を例に説明する。
ターゲットＣＰＵの命令コードを含むバイナリデータ１００をホストＣＰＵ上でシミュレーションする前に、変換コード保持手段５００に格納するターゲットＣＰＵ命令に対応するホストＣＰＵの命令列を参照するため、ターゲットＣＰＵのプログラムカウンタと変換コード保持手段５００のポインタの対をポインタ参照テーブル保持手段４００に設定する（図２のＳ１）。命令変換手段３００を用いて、ターゲットＣＰＵ命令をホストＣＰＵ命令列に変換する（図２のＳ２）。変換された命令列は変換コード保持手段５００に保持される（図２のＳ３）。読み込まれたバイナリデータの変換が完了していない場合（図２のＳ４でＮの場合）には、完了するまでポインタ参照テーブルの設定（図２のＳ１）、変換コードの生成（図２のＳ２）、変換コードの格納（図２のＳ３）を繰り返し行う。その際、ターゲットＣＰＵシステムで定義された命令長の最小単位で変換を行う。たとえば、ターゲットＣＰＵシステムで定義されている命令長が４バイトのみであれば、４バイト単位で変換を行い、ターゲットＣＰＵシステムで定義されている命令長が２バイト、４バイト、６バイトの３種類であれば、２バイト単位で変換を行う。また、読み込まれたバイナリデータの命令コードのエリアであっても、データエリア（オペランドエリア）であっても、同様に変換を行う。データエリアから読み出したデータや命令の途中から読み出した命令コードであっても、命令の先頭から読み出したものとして、変換を行う。読み出したデータあるいは命令コードが未定義命令に相当する場合には、ターゲットＣＰＵでの未定義命令実行の命令列に変換する。
読み込まれたバイナリデータの変換が完了した場合（図２のＳ４でＹの場合）には、開始すべきターゲットＣＰＵのプログラムカウンタを設定（図２のＳ５）し、設定されたＰＣに従い、ポインタ参照テーブル保持手段４００を検索する（図２のＳ６）。判定手段９００はポインタ参照テーブル保持手段４００から取り出したポインタ情報が有効な場合（図２のＳ７でＹの場合）には、変換済コードを実行する（図２のＳ８）ために変換コード実行手段７００の起動を行う。判定手段９００はポインタ参照テーブル保持手段４００から取り出したポインタ情報が無効な場合や該当するポインタ情報がなかった場合（図２のＳ７でＮの場合）には、命令の取り出し、命令の解釈、命令の実行を逐次的に行う（図２のＳ１０）ために逐次処理手段８００の起動を行う。変換済コード実行（図２のＳ８）および逐次処理実行（図２の１０）の完了後は、プログラムカウンタの更新を行い（図２のＳ９および図２のＳ１１）、次に実行するターゲットＣＰＵの変換済コードを検索する（図２のＳ６）。これらのポインタ参照テーブル検索（図２のＳ６）からプログラムカウンタの更新（図２のＳ９および図２のＳ１１）までを繰り返し実行することで、ターゲットＣＰＵ命令のシミュレーションを行う。ターゲットＣＰＵプログラムがオペレーティングシステムのようにターゲットＣＰＵのプログラムが周辺機器からプログラムをロードして実行するような場合には、ロードされたプログラムはポインタ参照テーブル４００に登録されていないため、逐次実行手段８００でシミュレーションされる。
【００１１】
以上のように、ポインタ参照テーブルに登録されているかどうか、または登録された情報が有効であるか無効であるかを判断し、ターゲットＣＰＵ命令のシミュレーション手段を切り替えることで、ターゲットＣＰＵのプログラムがプログラムをロード、生成、または更新するような場合でも、ターゲットＣＰＵの動作をホストＣＰＵ上で支障なくシミュレーションすることができる。
【００１２】
以上のように、本実施の形態１におけるＣＰＵシミュレーション方式は、シミュレーション対象となるターゲットＣＰＵの動作をホストＣＰＵ上でシミュレーションするシミュレーション方式において、以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）ホストＣＰＵ上に格納されているターゲットＣＰＵの命令コードを含むバイナリデータを読み込む読込手段、
（ｂ）前記読込手段によって読み込まれたバイナリデータをシミュレーション実行前にあるいは、逐次実行手段によるシミュレーション実行と並行して、シミュレーション実行履歴によらずに解釈し、ターゲットＣＰＵの動作をシミュレーションするためにホストＣＰＵ上で実行する命令列を生成する命令変換手段、
（ｃ）前記命令変換手段が生成したホストＣＰＵ上で実行する命令列を保持する変換コード保持手段、
（ｄ）ターゲットＣＰＵの命令アドレスと前記変換コード保持手段のマッピング情報（以降、ポインタと称す）の対を保持するポインタ参照テーブル保持手段、
（ｅ）ターゲットＣＰＵ命令の取り出し、解釈、実行を逐次的に行う逐次実行手段と前記変換コード保持手段に保持されている変換コードを実行する変換コード実行手段を備え、状況に応じて前記逐次実行手段と前記変換コード実行手段を切り替えてターゲットＣＰＵ命令を実行する実行手段。
【００１３】
また、実行手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）次にターゲットＣＰＵが実行する命令が前記ポインタ参照テーブル保持手段に格納されているかどうかを判定する判定手段。
【００１４】
実施の形態２．
図３は、実施の形態２に係るターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の構成と同様である。
図３において、ポインタ参照テーブル保持手段４００はターゲットＣＰＵのプログラムカウンタと変換コード保持手段５００のポインタの対保持する。
変換エリア情報保持手段９０２は命令変換手段３００によって変換された変換エリアの開始アドレスと終了アドレスの対を少なくとも１つ保持する。言いかえると、変換エリア情報保持手段９０２は、上記命令変換手段３００により変換された変換コードのエリアの開始アドレスと終了アドレスとを保持する。
変換エリア情報設定手段９０１はポインタ参照テーブル保持手段４００の内容を読み出し、変換された領域の開始アドレスと終了アドレスの検索を行い、開始アドレスと終了アドレスの対を変換エリア情報保持手段９０２に設定する。言いかえると、変換エリア情報設定手段９０１は上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルを検索し、上記命令変換手段３００により変換された変換コードのエリアの開始アドレスと終了アドレスとを抽出し、上記変換エリア情報保持手段９０２に上記開始アドレスと終了アドレスとを設定する。
比較手段９０３はターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０２が保持する開始アドレスと終了アドレスの間に含まれているかを比較する。言いかえると、比較手段９０３は、上記変換エリア情報保持手段９０２により保持された開始アドレスと終了アドレスとを読み出し、次にターゲットＣＰＵが実行する命令コードの命令アドレスの値が上記開始アドレスの値と終了アドレスの値との間に含まれているかどうかを比較する。
判定手段９００は変換エリア情報設定手段９０１と変換エリア情報保持手段９０２と比較手段９０３を具備する。
【００１５】
次に動作について図３を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態２では、ターゲットＣＰＵ命令をホストＣＰＵの命令列に変換が完了した後、変換エリア情報設定手段９０１がポインタ参照テーブル保持手段４００の検索を行う。変換エリア情報設定手段９０１はポインタ参照テーブル保持手段４００からターゲットＣＰＵの命令アドレスを読み出し、連続するエリアの抽出を行う。たとえば、ターゲットＣＰＵシステムで定義されている命令長が４バイトのみであり、ポインタ参照テーブル保持手段４００に格納されているターゲットＣＰＵの命令アドレスが、０Ｘ１０００、０ｘ１００４、０ｘ１００８、０ｘ１００Ｃ、０ｘ１０１０、０ｘ１０１４の値が格納されている場合には、開始アドレスが０ｘ１０００であり、終了アドレスが０ｘ１０１４となる。また、ターゲットＣＰＵシステムで定義されている命令長が２バイト、４バイト、６バイトの３種類であり、ポインタ参照テーブル保持手段４００に格納されているターゲットＣＰＵの命令アドレスが、０Ｘ１０００、０ｘ１００２、０ｘ１００４、０ｘ１００６、０ｘ１００８、０ｘ１００Ａ、０ｘ１００Ｃ、０ｘ１０１０、０ｘ１０１２、０ｘ１０１４の値が格納されている場合には、最初の開始アドレスが０ｘ１０００であり、最初の終了アドレスが０ｘ１００Ｃ、次の開始アドレスが０ｘ１０１０であり、次の終了アドレスが０ｘ１０１４となる。変換エリア情報設定手段９０１は、ポインタ参照テーブル保持手段４００の最初から最後までターゲットＣＰＵの命令アドレスの読み出しを行い、変換した全エリアの開始アドレスと終了アドレスの対を抽出する。変換エリア情報設定手段９０１で抽出された開始アドレスと終了アドレスの対が変換エリア情報保持手段９０２に通知され、保持される。
ターゲットＣＰＵ命令のシミュレーション時には、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０２が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持手段４００にターゲットＣＰＵの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行手段７００を起動し、読み出したポインタ情報が無効であれば、逐次実行手段８００を起動する。また、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０２が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていなければ、逐次実行手段８００を起動する。
【００１６】
以上のように、変換エリア情報設定手段及び設定エリア情報保持手段を備え、変換エリアの範囲（開始アドレスと終了アドレス）とターゲットＣＰＵのプログラムカウンタを比較できるようにすることにより、ポインタ参照テーブル保持手段の高速な検索を可能とし、高速にターゲットＣＰＵ命令のシミュレーションを行うことができる。
【００１７】
以上のように、実施の形態２におけるＣＰＵシミュレーション方式は、実施の形態１における前記判定手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）変換されたエリアの開始アドレスと終了アドレスの対を少なくとも１つを保持する変換エリア情報保持手段、
（ｂ）前記ポインタ参照テーブル保持手段を検索し、変換されたエリアの開始アドレスと終了アドレスを抽出し、前記変換エリア情報保持手段に開始アドレスと終了アドレスの対を設定する変換エリア情報設定手段、
（ｃ）前記変換エリア情報保持手段が保持する開始アドレスと終了アドレスを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスの間に含まれているかどうかを比較する比較手段。
【００１８】
実施の形態３．
図４は、実施の形態３に係るターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図４において、ポインタ参照テーブル保持手段４００はターゲットＣＰＵのプログラムカウンタと変換コード保持手段５００のポインタの対保持する。
変換エリア情報保持手段９０５は命令変換手段３００によって変換された変換エリアの開始アドレスと開始アドレスからの変換長さの対を少なくとも１つ保持する。言いかえると、変換エリア情報保持手段９０５は、上記命令変換手段３００により変換された変換コードのエリアの開始アドレスと変換コードの変換長さとを保持する。
変換エリア情報設定手段９０４はポインタ参照テーブル保持手段４００の内容を読み出し、変換された領域の開始アドレスと開始アドレスからの変換長さの検索を行い、開始アドレスと変換長さの対を変換エリア情報保持手段９０２に設定する。言いかえると、変換エリア情報設定手段９０４は、上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００が保持する上記対応テーブルを検索し、上記命令変換手段３００により変換された変換コードのエリアの開始アドレスと変換コードの変換長さを抽出し、上記変換エリア情報保持手段９０５に上記開始アドレスと変換コードの変換長さとを設定する。
比較手段９０６はターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０２が保持する開始アドレスと（開始アドレス＋変換長さ）の間に含まれているかを比較する。言いかえると、比較手段９０６は、上記変換エリア情報保持手段９０５により保持された開始アドレスと変換コードの変換長さとを読み出し、次にターゲットＣＰＵが実行する命令コードの命令アドレスの値が上記開始アドレスの値と上記開始アドレスに変換コードの変換長さを加算した値の間に含まれているかどうかを比較する。
判定手段９００は変換エリア情報設定手段９０４と変換エリア情報保持手段９０５と比較手段９０６を具備する。
【００１９】
次に動作について図４を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態３では、ターゲットＣＰＵ命令をホストＣＰＵの命令列に変換が完了した後、変換エリア情報設定手段９０４がポインタ参照テーブル保持手段４００の検索を行う。変換エリア情報設定手段９０４はポインタ参照テーブル保持手段４００からターゲットＣＰＵの命令アドレスを読み出し、連続するエリアの抽出を行う。たとえば、ターゲットＣＰＵシステムで定義されている命令長が４バイトのみであり、ポインタ参照テーブル保持手段４００に格納されているターゲットＣＰＵの命令アドレスが、０Ｘ１０００、０ｘ１００４、０ｘ１００８、０ｘ１００Ｃ、０ｘ１０１０、０ｘ１０１４の値が格納されている場合には、開始アドレスが０ｘ１０００であり、変換長さが０ｘ１４となる。また、ターゲットＣＰＵシステムで定義されている命令長が２バイト、４バイト、６バイトの３種類であり、ポインタ参照テーブル保持手段４００に格納されているターゲットＣＰＵの命令アドレスが、０Ｘ１０００、０ｘ１００２、０ｘ１００４、０ｘ１００６、０ｘ１００８、０ｘ１００Ａ、０ｘ１００Ｃ、０ｘ１０１０、０ｘ１０１２、０ｘ１０１４の値が格納されている場合には、最初の開始アドレスが０ｘ１０００であり、最初の変換長さが０ｘ０Ｃ、次の開始アドレスが０ｘ１０１０であり、次の変換長さが０ｘ１４となる。変換エリア情報設定手段９０４は、ポインタ参照テーブル保持手段４００の最初から最後までターゲットＣＰＵの命令アドレスの読み出しを行い、変換した全エリアの開始アドレスと変換長さの対を抽出する。変換エリア情報設定手段９０４で抽出された開始アドレスと変換長さの対が変換エリア情報保持手段９０５に通知され、保持される。
ターゲットＣＰＵ命令のシミュレーション時には、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０５が保持する開始アドレスと（開始アドレス＋変換長さ）の対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持手段４００にターゲットＣＰＵの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行手段７００を起動し、読み出したポインタ情報が無効であれば、逐次実行手段８００を起動する。また、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０２が保持する開始アドレスと（開始アドレス＋変換長さ）の対に挟まれたエリアに含まれていなければ、逐次実行手段８００を起動する。
【００２０】
以上のように、変換エリア情報設定手段及び設定エリア情報保持手段を備え、変換エリアの範囲（開始アドレスと変換長さ）とターゲットＣＰＵのプログラムカウンタを比較できるようにすることにより、ポインタ参照テーブル保持手段の高速な検索を可能とし、高速にターゲットＣＰＵ命令のシミュレーションを行うことができる。
【００２１】
以上のように、実施の形態３におけるＣＰＵシミュレーション方式は、実施の形態１における前記判定手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）変換されたエリアの開始アドレスと変換長さの対を少なくとも１つを保持する変換エリア情報保持手段、
（ｂ）前記ポインタ参照テーブル保持手段を検索し、変換されたエリアの開始アドレスと変換長さを抽出し、前記変換エリア情報保持手段に開始アドレスと変換長さの対を設定する変換エリア情報設定手段、
（ｃ）前記変換エリア情報保持手段が保持する開始アドレスと変換長さを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと（開始アドレス＋変換長さ）の間に含まれているかどうかを比較する比較手段。
【００２２】
実施の形態４．
図５は、実施の形態４に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図５において、ターゲットＣＰＵバイナリデータ１００はシミュレーションすべきターゲットＣＰＵの命令コードを含む。
上記読込手段２００は、ヘッダー情報を有する上記バイナリデータを入力する。
変換エリア情報指示手段２０２はターゲットＣＰＵバイナリデータ１００の命令コードのエリア情報（変換開始アドレス及び変換終了アドレスの対）を少なくとも１つを保持し、命令変換手段３００に変換範囲の指示を行う。言いかえると、変換エリア情報指示手段２０２は、上記命令変換手段３００により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記命令変換手段３００に指示するために出力する。
変換エリア情報設定手段２０１はターゲットＣＰＵバイナリデータ１００のヘッダー情報から命令コードのエリア（開始アドレス及び終了アドレスの対）を抽出し、変換エリア情報指示手段２０２を設定する。言いかえると、変換エリア情報設定手段２０１は、上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記変換エリア情報指示手段２０２に設定させるため出力する。
読込手段２００は変換エリア情報設定手段２０１と変換エリア情報指示手段２０２を具備する。
命令変換手段３００はターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する。命令変換手段３００は、上記変換エリア情報指示手段２０２により出力された開始アドレスと終了アドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換する。
【００２３】
次に動作について図５を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態４では、ターゲットＣＰＵバイナリデータを読込手段２００を用いて読み込む時に、変換エリア情報設定手段２０１がヘッダー情報から命令コードの配置情報（命令コードの開始アドレスと終了アドレスの対）を読み込む。変換エリア情報設定手段２０１により抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示手段２０２に保持される。ターゲットＣＰＵ命令の変換時には、変換エリア情報指示手段２０２により指示されるエリアを命令コードのエリアとして、命令変換手段３００はターゲットＣＰＵの命令をホストＣＰＵの命令列に変換する。その際、読込手段２００によって読み込まれたターゲットＣＰＵバイナリデータが飛び飛びのエリアで構成されている場合であっても、変換エリア情報指示手段２０２により、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
【００２４】
以上のように、変換エリア情報設定手段及び設定エリア情報指示手段を備え、変換エリアの範囲（開始アドレスと終了アドレス）を命令変換手段に通知することにより、効果的な命令変換を可能とし、ターゲットＣＰＵ命令のシミュレーションに必要な資源を小型化することができる。
【００２５】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、前記読込手段及び命令変換手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）変換すべきエリアの開始アドレスと変換の終了アドレスの対を少なくとも１つを保持する変換エリア情報指示手段、
（ｂ）ターゲットＣＰＵプログラムをホストＣＰＵ上にロードする時にターゲットＣＰＵプログラムのヘッダー情報から変換エリアを抽出し、前記変換エリア情報指示手段を設定する変換エリア情報設定手段、
（ｃ）前記変換エリア情報指示手段が示す開始アドレスと終了アドレスの間をターゲットＣＰＵの命令エリアとして変換を行う命令変換手段。
【００２６】
実施の形態５．
図６は、実施の形態５に係るターゲットＣＰＵの命令コードを含むバイナリデータがオペレーティングシステムなどのようにメモリ管理機能を有するプログラムである場合の読込手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図６において、ターゲットＣＰＵバイナリデータ１００はシミュレーションすべきターゲットＣＰＵの命令コードを含む。上記バイナリデータ１００は、メモリ管理を行うメモリ管理テーブル１０１を有する。
メモリ管理テーブル１０１はターゲットＣＰＵバイナリデータ１００がオペレーティングシステムなどのようにメモリ管理機能を有する場合にメモリ管理に用いる。
変換エリア情報指示手段２０２はターゲットＣＰＵバイナリデータ１００の命令コードのエリア情報（変換開始アドレス及び変換終了アドレスの対）を少なくとも１つを保持し、命令変換手段３００に変換範囲の指示を行う。言いかえると、変換エリア情報指示手段２０２は、上記命令変換手段３００により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記命令変換手段３００に指示するために出力する。
変換エリア情報設定手段２０３はターゲットＣＰＵバイナリデータ１００のメモリ管理テーブル情報から命令コードのエリア（開始アドレス及び終了アドレスの対）を抽出し、変換エリア情報指示手段２０２を設定する。言いかえると、変換エリア情報設定手段２０３は、上記メモリ管理テーブル１０１から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記変換エリア情報指示手段２０２に設定させるために出力する。
読込手段２００は変換エリア情報設定手段２０３と変換エリア情報指示手段２０２を具備する。
命令変換手段３００はターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する。上記命令変換手段３００は、上記変換エリア情報指示手段２０２により出力された開始アドレスと終了アドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換する。
【００２７】
次に動作について図６を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態５では、ターゲットＣＰＵバイナリデータを読込手段２００を用いて読み込む時に、変換エリア情報設定手段２０１がターゲットＣＰＵバイナリデータ１００が保持するメモリ管理テーブル１０１から命令コードの配置情報（命令コードの開始アドレスと終了アドレスの対）を読み込む。変換エリア情報設定手段２０１により抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示手段２０２に保持される。ターゲットＣＰＵ命令の変換時には、変換エリア情報指示手段２０２により指示されるエリアを命令コードのエリアとして、命令変換手段３００はターゲットＣＰＵの命令をホストＣＰＵの命令列に変換する。その際、読込手段２００によって読み込まれたターゲットＣＰＵバイナリデータのメモリ常駐情報を抽出し、ターゲットＣＰＵシステムのメモリに常駐する領域のみを変換エリア情報指示手段２０２による変換対象とし、効率的に命令の変換を行う。
【００２８】
以上のように、変換エリア情報設定手段及び設定エリア情報指示手段を備え、変換エリアの範囲（開始アドレスと終了アドレス）を命令変換手段に通知することにより、効果的な命令変換を可能とし、ターゲットＣＰＵ命令のシミュレーションに必要な資源を小型化することができる。
【００２９】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、ターゲットＣＰＵプログラムがメモリ管理を行っている場合に、前記読込手段及び命令変換手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）変換すべきエリアの開始アドレスと変換の終了アドレスの対を少なくとも１つを保持する変換エリア情報指示手段、
（ｂ）ロードしたターゲットＣＰＵプログラムのメモリ管理テーブルから変換エリアを抽出し、前記変換エリア情報指示手段を設定する変換エリア情報設定手段、
（ｃ）前記変換エリア情報指示手段が示す開始アドレスと終了アドレスの間をターゲットＣＰＵの命令エリアとして変換を行う命令変換手段。
【００３０】
実施の形態６．
図７は、実施の形態６に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図７において、ターゲットＣＰＵバイナリデータ１００はシミュレーションすべきターゲットＣＰＵの命令コードを含む。
上記読込手段２００は、ヘッダー情報を有する上記バイナリデータを入力する。
変換エリア情報指示手段２０５はターゲットＣＰＵバイナリデータ１００の命令コードのエリア情報（変換開始アドレス及び変換長さの対）を少なくとも１つを保持し、命令変換手段３００に変換範囲の指示を行う。言いかえると、変換エリア情報指示手段２０５は、上記命令変換手段３００により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記命令変換手段３００に指示するために出力する。
変換エリア情報設定手段２０４はターゲットＣＰＵバイナリデータ１００のヘッダー情報から命令コードのエリア（開始アドレス及び変換長さの対）を抽出し、変換エリア情報指示手段２０５を設定する。言いかえると、変換エリア情報設定手段２０４は、上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記変換エリア情報指示手段２０５に設定させるために出力する。
読込手段２００は変換エリア情報設定手段２０４と変換エリア情報指示手段２０５を具備する。
命令変換手段３００はターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する。命令変換手段３００は、上記変換エリア情報指示手段２０５により指示された開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換する。
【００３１】
次に動作について図７を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態６では、ターゲットＣＰＵバイナリデータを読込手段２００を用いて読み込む時に、変換エリア情報設定手段２０１がヘッダー情報から命令コードの配置情報（命令コードの開始アドレスと命令コードの長さの対）を読み込む。変換エリア情報設定手段２０４により抽出された命令コードの開始アドレスと変換長さの対は、変換エリア情報指示手段２０５に保持される。ターゲットＣＰＵ命令の変換時には、変換エリア情報指示手段２０２により指示されるエリアを命令コードのエリアとして、命令変換手段３００はターゲットＣＰＵの命令をホストＣＰＵの命令列に変換する。その際、読込手段２００によって読み込まれたターゲットＣＰＵバイナリデータが飛び飛びのエリアで構成されている場合であっても、変換エリア情報指示手段２０５により、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
【００３２】
以上のように、変換エリア情報設定手段及び設定エリア情報指示手段を備え、変換エリアの範囲（開始アドレスと変換長さ）を命令変換手段に通知することにより、効果的な命令変換を可能とし、ターゲットＣＰＵ命令のシミュレーションに必要な資源を小型化することができる。
【００３３】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、前記読込手段及び命令変換手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）変換すべきエリアの開始アドレスと変換の終了アドレスまでの変換長さの対を少なくとも１つを保持する変換エリア情報指示手段、
（ｂ）ターゲットＣＰＵプログラムをホストＣＰＵ上にロードする時にターゲットＣＰＵプログラムのヘッダー情報から変換エリアを抽出し、前記変換エリア情報指示手段を設定する変換エリア情報設定手段、
（ｃ）前記変換エリア情報指示手段が示す開始アドレスと（開始アドレス＋変換長さ）の間をターゲットＣＰＵの命令エリアとして変換を行う命令変換手段。
【００３４】
実施の形態７．
図８は、実施の形態７に係るターゲットＣＰＵの命令コードを含むバイナリデータがオペレーティングシステムなどのようにメモリ管理機能を有するプログラムである場合の読込手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図８において、ターゲットＣＰＵバイナリデータ１００はシミュレーションすべきターゲットＣＰＵの命令コードを含む。上記バイナリデータ１００は、メモリ管理を行うメモリ管理テーブル１０１を有する。
メモリ管理テーブル１０１はターゲットＣＰＵバイナリデータがオペレーティングシステムなどのようにメモリ管理機能を有する場合にメモリ管理に用いる。変換エリア情報指示手段２０５はターゲットＣＰＵバイナリデータ１００の命令コードのエリア情報（変換開始アドレス及び変換長さの対）を少なくとも１つを保持し、命令変換手段３００に変換範囲の指示を行う。言いかえると、変換エリア情報指示手段２０５は、上記命令変換手段３００により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記命令変換手段３００に指示するために出力する。
変換エリア情報設定手段２０６はターゲットＣＰＵバイナリデータ１００のメモリ管理テーブル情報から命令コードのエリア（開始アドレス及び変換長さの対）を抽出し、変換エリア情報指示手段２０５を設定する。言いかえると、変換エリア情報設定手段２０６は、上記メモリ管理テーブル１０１から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記変換エリア情報指示手段２０５に設定させるために出力する。
読込手段２００は変換エリア情報設定手段２０６と変換エリア情報指示手段２０５を具備する。
命令変換手段３００はターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する。命令変換手段３００は、上記変換エリア情報指示手段２０５により出力された開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間をターゲットＣＰＵの命令コードのエリアとして変換する。
【００３５】
次に動作について図８を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態７では、ターゲットＣＰＵバイナリデータを読込手段２００を用いて読み込む時に、変換エリア情報設定手段２０６がターゲットＣＰＵバイナリデータ１００が保持するメモリ管理テーブル１０１から命令コードの配置情報（命令コードの開始アドレスと変換長さの対）を読み込む。変換エリア情報設定手段２０６により抽出された命令コードの開始アドレスと変換長さの対は、変換エリア情報指示手段２０５に保持される。ターゲットＣＰＵ命令の変換時には、変換エリア情報指示手段２０５により指示されるエリアを命令コードのエリアとして、命令変換手段３００はターゲットＣＰＵの命令をホストＣＰＵの命令列に変換する。その際、読込手段２００によって読み込まれたターゲットＣＰＵバイナリデータのメモリ常駐情報を抽出し、ターゲットＣＰＵシステムのメモリに常駐する領域のみを変換エリア情報指示手段２０５による変換対象とし、効率的に命令の変換を行う。
【００３６】
以上のように、変換エリア情報設定手段及び設定エリア情報指示手段を備え、変換エリアの範囲（開始アドレスと変換長さ）を命令変換手段に通知することにより、効果的な命令変換を可能とし、ターゲットＣＰＵ命令のシミュレーションに必要な資源を小型化することができる。
【００３７】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、ターゲットＣＰＵプログラムがメモリ管理を行っている場合に、前記読込手段及び命令変換手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）変換すべきエリアの開始アドレスと変換の終了アドレスまでの変換長さの対を少なくとも１つを保持する変換エリア情報指示手段、
（ｂ）ロードしたターゲットＣＰＵプログラムのメモリ管理テーブルから変換エリアを抽出し、前記変換エリア情報指示手段を設定する変換エリア情報設定手段、
（ｃ）前記変換エリア情報指示手段が示す開始アドレスと（開始アドレス＋変換長さ）の間をターゲットＣＰＵの命令エリアとして変換を行う命令変換手段。
【００３８】
実施の形態８．
図９は、実施の形態８に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段及びターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図９において、ターゲットＣＰＵバイナリデータ１００はシミュレーションすべきターゲットＣＰＵの命令コードを含む。
読込手段２００は、ヘッダー情報を有する上記バイナリデータ１００を入力する。
命令変換手段３００はターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する。
変換エリア情報指示手段２０２はターゲットＣＰＵバイナリデータ１００の命令コードのエリア情報（変換開始アドレス及び変換終了アドレスの対）を少なくとも１つを保持し、命令変換手段３００に変換範囲の指示を行う。言いかえると、変換エリア情報指示手段２０２は、上記命令変換手段３００により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記命令変換手段３００に指示するために出力する。
変換エリア情報設定手段２０１はターゲットＣＰＵバイナリデータ１００のヘッダー情報から命令コードのエリア（開始アドレス及び終了アドレスの対）を抽出し、変換エリア情報指示手段２０２を設定する。言いかえると、変換エリア情報設定手段２０１は、上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスとを上記変換エリア情報指示手段２０２に設定させるために出力する。
読込手段２００は変換エリア情報設定手段２０１と変換エリア情報指示手段２０２を具備する。
比較手段９０３はターゲットＣＰＵのプログラムカウンタが変換エリア情報指示手段２０２が保持する開始アドレスと終了アドレスの間に含まれているかを比較する。言いかえると、比較手段９０３は、上記変換エリア情報指示手段２０２により保持された開始アドレスと終了アドレスとを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスとの間に含まれているかどうかを比較する。
判定手段９００は比較手段９０３を具備する。上記判定手段９００は、上記比較手段９０３により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスとの間に含まれている場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されているかどうかを判定し、上記比較手段９０３により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスとの間に含まれていない場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていないと判定する。
実行手段６００は、上記判定手段９００により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていないと判定された場合に、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行し、上記判定手段９０３により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていると判定された場合に、上記変換コード保持手段５００により保持された変換コードを所定の基準により実行する。
【００３９】
次に動作について図９を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態８では、ターゲットＣＰＵバイナリデータを読込手段２００を用いて読み込む時に、変換エリア情報設定手段２０１がヘッダー情報から命令コードの配置情報（命令コードの開始アドレスと終了アドレスの対）を読み込む。変換エリア情報設定手段２０１により抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示手段２０２に保持される。ターゲットＣＰＵ命令の変換時には、変換エリア情報指示手段２０２により指示されるエリアを命令コードのエリアとして、命令変換手段３００はターゲットＣＰＵの命令をホストＣＰＵの命令列に変換する。その際、読込手段２００によって読み込まれたターゲットＣＰＵバイナリデータが飛び飛びのエリアで構成されている場合であっても、変換エリア情報指示手段２０２により、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
ターゲットＣＰＵ命令のシミュレーション時には、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報指示手段２０２が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持手段４００にターゲットＣＰＵの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行手段７００を起動し、読み出したポインタ情報が無効であれば、逐次実行手段８００を起動する。また、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０２が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていなければ、逐次実行手段８００を起動する。
本実施例では、ターゲットＣＰＵバイナリデータ１００のヘッダー情報から変換エリア情報を抽出したが、ターゲットＣＰＵプログラムがオペレーティングシステムなどの場合には、実施例５記載の変換エリア情報設定手段２０２を用いて、ターゲットＣＰＵバイナリプログラム１００内のメモリ管理テーブル１０１の情報を読み出し、変換エリア情報指示手段２０２に設定することも可能である。
【００４０】
以上のように、変換エリア情報設定手段及び設定エリア情報指示手段を備え、変換エリアの範囲（開始アドレスと終了アドレス）を命令変換手段に通知することにより、効果的な命令変換を可能とし、また、変換エリアの範囲（開始アドレスと終了アドレス）とターゲットＣＰＵのプログラムカウンタを比較できるようにすることにより、ポインタ参照テーブル保持手段の高速な検索を可能とし、ターゲットＣＰＵ命令のシミュレーションに必要な資源を小型化し、高速にターゲットＣＰＵ命令のシミュレーションを行うことができる。
【００４１】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、前記判定手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）前記変換エリア情報指示手段が保持する開始アドレスと終了アドレスを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと終了アドレスの間に含まれているかどうかを比較する比較手段。
【００４２】
実施の形態９．
図１０は、実施の形態９に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段及びターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図１０において、ターゲットＣＰＵバイナリデータ１００はシミュレーションすべきターゲットＣＰＵの命令コードを含む。
読込手段２００は、ヘッダー情報を有する上記バイナリデータを入力する。
命令変換手段３００はターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する。
変換エリア情報指示手段２０５はターゲットＣＰＵバイナリデータ１００の命令コードのエリア情報（変換開始アドレス及び変換長さの対）を少なくとも１つを保持し、命令変換手段３００に変換範囲の指示を行う。言いかえると、変換エリア情報指示手段２０５は、上記命令変換手段３００により変換すべき上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを保持し、保持された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記命令変換手段３００に指示するために出力する。
変換エリア情報設定手段２０４はターゲットＣＰＵバイナリデータ１００のヘッダー情報から命令コードのエリア（開始アドレス及び変換長さの対）を抽出し、変換エリア情報指示手段２０５を設定する。言いかえると、変換エリア情報設定手段２０４は、上記バイナリデータが入力される時に上記バイナリデータが有するヘッダー情報から変換エリアとして上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを抽出し、抽出された上記ターゲットＣＰＵの命令コードのエリアの開始アドレスと変換の終了アドレスまでの変換長さとを上記変換エリア情報指示手段２０５に設定させるために出力する。
読込手段２００は変換エリア情報設定手段２０４と変換エリア情報指示手段２０５を具備する。
比較手段９０６はターゲットＣＰＵのプログラムカウンタが変換エリア情報保持手段９０２が保持する開始アドレスと（開始アドレス＋変換長さ）の間に含まれているかを比較する。上記比較手段９０６は、上記変換エリア情報指示手段２０５により保持された開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間に含まれているかどうかを比較する。
判定手段９００は比較手段９０６を具備する。上記判定手段９００は、上記比較手段９０６により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間に含まれている場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されているかどうかを判定し、上記比較手段９０６により比較された結果、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと上記開始アドレスの値に変換の終了アドレスまでの変換長さを加算した値に対応するアドレスとの間に含まれていない場合に、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていないと判定する。
実行手段６００は、上記判定手段９００により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていないと判定された場合に、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行し、上記判定手段９００により、次にターゲットＣＰＵが実行する命令が上記テーブル保持手段の一例としてのポインタ参照テーブル保持手段４００により保持された対応テーブルに格納されていると判定された場合に、上記変換コード保持手段５００により保持された変換コードを所定の基準により実行する。
【００４３】
次に動作について図１０を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態９では、ターゲットＣＰＵバイナリデータを読込手段２００を用いて読み込む時に、変換エリア情報設定手段２０１がヘッダー情報から命令コードの配置情報（命令コードの開始アドレスと命令コードの長さの対）を読み込む。変換エリア情報設定手段２０４により抽出された命令コードの開始アドレスと変換長さの対は、変換エリア情報指示手段２０５に保持される。ターゲットＣＰＵ命令の変換時には、変換エリア情報指示手段２０２により指示されるエリアを命令コードのエリアとして、命令変換手段３００はターゲットＣＰＵの命令をホストＣＰＵの命令列に変換する。その際、読込手段２００によって読み込まれたターゲットＣＰＵバイナリデータが飛び飛びのエリアで構成されている場合であっても、変換エリア情報指示手段２０５により、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
ターゲットＣＰＵ命令のシミュレーション時には、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報指示手段２０５が保持する開始アドレスと（開始アドレス＋変換長さ）の対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持手段４００にターゲットＣＰＵの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行手段７００を起動し、読み出したポインタ情報が無効であれば、逐次実行手段８００を起動する。また、設定されたターゲットＣＰＵのプログラムカウンタが変換エリア情報指示手段２０５が保持する開始アドレスと（開始アドレス＋変換長さ）の対に挟まれたエリアに含まれていなければ、逐次実行手段８００を起動する。
本実施例では、ターゲットＣＰＵバイナリデータ１００のヘッダー情報から変換エリア情報を抽出したが、ターゲットＣＰＵプログラムがオペレーティングシステムなどの場合には、実施例６記載の変換エリア情報設定手段２０３を用いて、ターゲットＣＰＵバイナリプログラム１００内のメモリ管理テーブル１０１の情報を読み出し、変換エリア情報指示手段２０５に設定することも可能である。
【００４４】
以上のように、変換エリア情報設定手段及び設定エリア情報指示手段を備え、変換エリアの範囲（開始アドレスと変換長さ）を命令変換手段に通知することにより、効果的な命令変換を可能とし、また、変換エリアの範囲（開始アドレスと変換長さ）とターゲットＣＰＵのプログラムカウンタを比較できるようにすることにより、ポインタ参照テーブル保持手段の高速な検索を可能とし、ターゲットＣＰＵ命令のシミュレーションに必要な資源を小型化し、高速にターゲットＣＰＵ命令のシミュレーションを行うことができる。
【００４５】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、前記判定手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）前記変換エリア情報指示手段が保持する開始アドレスと変換長さを読み出し、次にターゲットＣＰＵが実行する命令の命令アドレスが開始アドレスと（開始アドレス＋変換長さ）の間に含まれているかどうかを比較する比較手段。
【００４６】
実施の形態１０．
図１１は、実施の形態１０に係るポインタ参照テーブル保持手段、及び、逐次実行手段と変換コード実行手段を切り替えてターゲットＣＰＵ命令を実行する実行手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図１１において、ターゲットＣＰＵは、システムメモリを有している。
命令変換手段３００は、上記読込手段２００により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを上記ターゲットＣＰＵのシステムメモリのページ単位で変換して命令列を生成する。
上記変換コード保持手段５００は、上記命令変換手段３００により生成された命令列を保持する。
ページポインタ参照テーブル保持手段４０１はターゲットＣＰＵのページアドレスと変換コード保持手段５００の該当ポインタの対を保持する。言いかえると、ページポインタテーブル保持手段の一例として、ページポインタ参照テーブル保持手段４０１は、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵのシステムメモリのページアドレスと上記変換コード保持手段５００により保持された命令列のアドレスとを対応させた対応テーブルを保持する。
ポインタ情報保持手段４０２はターゲットＣＰＵのページ単位で管理され、ターゲットＣＰＵのページ先頭から順に変換コード保持手段５００のポインタと有効／無効情報を保持する。言いかえると、有効／無効情報保持手段の一例として、ポインタ情報保持手段４０２は、上記変換コード保持手段５００により保持された命令列が有効な命令列か無効な命令列かの有効／無効情報を保持する。
ポインタ参照テーブル保持手段４００はページポインタ参照テーブル保持手段４０１とポインタ情報保持手段４０２を具備する。
命令変換手段３００はページ単位で変換を行い、ページポインタ参照テーブル保持手段４０１及びポインタ情報保持手段４０２を設定する。
逐次実行手段７００は変換された変換コードを実行するための変換コード実行手段、８００は命令の取り出し、命令の解釈、命令の実行を逐次的に行う。
判定手段９００はターゲットＣＰＵのプログラムカウンタでポインタ参照テーブル保持手段４００を検索し、有効なポインタが格納されているかを判断し、有効なポインタが格納されている場合に変換コード実行手段７００を起動し、無効なポインタが格納されている場合に逐次実行手段８００を起動する。
実行手段６００は判定手段９００、変換コード実行手段７００、逐次実行手段８００を具備する。上記実行手段６００は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在するページアドレスに対応する命令列を上記ページポインタテーブル保持手段の一例であるページポインタ参照テーブル保持手段４０１から抽出し、上記有効／無効情報保持手段の一例であるポインタ情報保持手段４０２により保持された有効／無効情報に基づいて上記抽出された命令列が有効である場合に、上記変換コード保持手段５００により保持された命令列の中からターゲットＣＰＵが実行する命令コードに対応する変換コードを実行し、上記有効／無効情報保持手段の一例であるポインタ情報保持手段４０２により保持された有効／無効情報に基づいて上記抽出された命令列が無効である場合に、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行する。
【００４７】
次に動作について図１１を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態１０では、命令変換手段３００がターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する際は、ターゲットＣＰＵシステムのメモリをページ単位で命令変換を行う。変換された命令は、変換コード保持手段５００に格納される。
同時にターゲットＣＰＵのページアドレスと変換コード保持手段５００に格納したポインタの対をページポインタ参照テーブル保持手段に格納する．あわせて、ターゲットＣＰＵのページ単位で管理され、ターゲットＣＰＵのページ先頭から順に変換コード保持手段５００のポインタと有効／無効情報を保持するポインタ情報保持手段４０２を設定する。
ターゲットＣＰＵ命令のシミュレーション時には、設定されたターゲットＣＰＵのプログラムカウンタのページアドレスを元にページポインタ参照テーブル保持手段４０１の検索を行う。ページポインタ参照テーブル保持手段４０１の検索の結果得られたポインタにターゲットＣＰＵのプログラムカウンタのページオフセットを加算することで、ターゲットＣＰＵのプログラムカウンタに対応する変換コード保持手段５００の該当ポインタ情報を抽出する。判定手段９００はポインタ情報保持手段４０２から得られた有効／無効情報をみて、有効であれば同時に得られたポインタ情報に従い、変換コード実行手段７００の起動を行う。ポインタ情報保持手段から得られた有効／無効情報が無効であれば、逐次実行手段の起動を行う。
【００４８】
以上のように、ページポインタ参照テーブル保持手段とポインタ情報保持手段を備え、ターゲットＣＰＵのプログラムカウンタのページアドレスとページ内オフセットによるポインタ参照テーブル保持手段の検索を行うことにより、ポインタ参照テーブル保持手段の全検索を行うことなく、ターゲットＣＰＵ命令のシミュレーションを高速に行うことができる。
【００４９】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、前記ポインタ参照テーブル保持手段及び命令変換手段及び実行手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）ターゲットＣＰＵのページアドレスと前記変換コード保持手段の該当ポインタの対を保持するページポインタ参照テーブル保持手段、
（ｂ）ターゲットＣＰＵのページ先頭から順に前記変換コード保持手段のポインタと有効／無効情報を保持するポインタ情報保持手段、
（ｃ）ターゲットＣＰＵの命令をページ単位でホストＣＰＵの命令列に変換を行い、前記ページポインタ参照テーブル保持手段及びポインタ情報保持手段を設定する命令変換手段、
（ｄ）次にターゲットＣＰＵが実行する命令の命令アドレスのページアドレスに対応するポインタとページ内オフセットから前記ポインタ情報保持手段の該当場所に保持されているポインタが有効である場合に、変換コード実行手段を起動し、ポインタが無効である場合に逐次処理手段を起動する実行手段。
【００５０】
実施の形態１１．
図１２は、実施の形態１１に係るポインタ参照テーブル保持手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図１２において、バイナリデータは、所定のメモリ容量を１ページとする論理ページの論理ページアドレスを有している。
上記ターゲットＣＰＵは、システムメモリを有し、上記論理ページアドレスと上記論理ページアドレスに対応する上記システムメモリのページアドレスである物理ページアドレスとを記憶している。
ページポインタ参照テーブル保持手段４０１はターゲットＣＰＵの物理ページアドレスと変換コード保持手段５００の該当ポインタの対を保持する。
ポインタ情報保持手段４０２はターゲットＣＰＵのページ単位で管理され、ターゲットＣＰＵのページ先頭から順に変換コード保持手段５００のポインタと有効／無効情報を保持する。
ページアドレス変換バッファ保持手段４０３はターゲットＣＰＵの論理ページアドレスと論理ページアドレスに対応する物理ページアドレスと物理ページアドレスに対応する変換コード保持手段５００の該当ポインタの対を保持する。言いかえると、ページアドレス変換バッファ保持手段４０３は、上記ターゲットＣＰＵに記憶された論理ページアドレスと上記論理ページアドレスに対応する物理ページアドレスと上記変換コード保持手段により保持された命令列のアドレスとを対応させて保持する。
ポインタ参照テーブル保持手段４００はページポインタ参照テーブル保持手段４０１とポインタ情報保持手段４０２とページアドレス変換バッファ保持手段４０３を具備する。
変換コード実行手段７００は変換された変換コードを実行する。
逐次実行手段８００は命令の取り出し、命令の解釈、命令の実行を逐次的に行う。
判定手段９００はターゲットＣＰＵのプログラムカウンタでポインタ参照テーブル保持手段４００を検索し、有効なポインタが格納されているかを判断し、有効なポインタが格納されている場合に変換コード実行手段７００を起動し、無効なポインタが格納されている場合に逐次実行手段８００を起動する。
実行手段６００は判定手段９００、変換コード実行手段７００、逐次実行手段８００を具備する。上記実行手段６００は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段４０３から検索し、一致する上記論理ページアドレスが検索された場合に、上記次にターゲットＣＰＵが実行する命令コードのアドレスが存在するページアドレスに対応する命令列を上記ページポインタテーブル保持手段の一例であるページポインタ参照テーブル保持手段４０１から抽出する。
アドレス変換機構１０００はターゲットＣＰＵシステムのアドレス変換機構である。
また、上記ターゲットＣＰＵは、上記論理ページアドレスと上記論理ページアドレスに対応する上記物理ページアドレスとを相互に変換する。
そして、上記実行手段６００は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段４０３により対応させられて保持された論理ページアドレスと物理ページアドレスと命令列のアドレスとから検索し、一致する上記論理ページアドレスが検索されない場合に、ページアドレス変換バッファ保持手段４０３に次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスに対応する物理ページアドレスを上記ターゲットＣＰＵから入力させ、ページアドレス変換バッファ保持手段２０４に入力させられた物理ページアドレスと上記論理ページアドレスと上記変換コード保持手段５００により保持された命令列のアドレスとを対応させて保持させ、再度、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段４０３から検索する。
【００５１】
次に動作について図１２を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態１１では、命令変換手段３００がターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する際は、ターゲットＣＰＵシステムの物理メモリをページ単位で命令変換を行う。変換された命令は、変換コード保持手段５００に格納される。同時にターゲットＣＰＵの物理ページアドレスと変換コード保持手段５００に格納したポインタの対をページポインタ参照テーブル保持手段４０１に格納する．あわせて、ターゲットＣＰＵの物理ページ単位で管理され、ターゲットＣＰＵのページ先頭から順に変換コード保持手段５００のポインタと有効／無効情報を保持するポインタ情報保持手段４０２を設定する。
ターゲットＣＰＵ命令のシミュレーション時には、設定されたターゲットＣＰＵのプログラムカウンタの論理ページアドレスを元にページアドレス変換バッファ４０３の検索を行う。ページアドレス変換バッファ保持手段は、ターゲットＣＰＵ命令の変換時には設定されないため、ターゲットＣＰＵのプログラムカウンタの論理ページアドレスは該当アドレスが登録されておらず、ミスとなる。ミスとなった場合には、ターゲットＣＰＵシステムのアドレス変換機構１０００による論理アドレス・物理アドレスの変換を行い、得られた物理アドレスでページポインタ参照テーブル保持手段４０１の検索を行う。ターゲットＣＰＵのプログラムカウンタの論理ページアドレス、ターゲットＣＰＵシステムのアドレス変換機構１０００で得られた物理ページアドレス、ページポインタ参照テーブル保持手段４０１で得られたページポインタをページアドレス変換バッファ保持手段４０３に登録する。ターゲットＣＰＵのプログラムカウンタの論理ページアドレスに対応するページポインタがページポインタ参照テーブル保持手段４０１にない場合には、ポインタ情報保持手段４０４が有する逐次実行手段８００のポインタを示す専用エリアのポインタをページアドレス変換バッファ保持手段４０３に登録する。その後、再度ターゲットＣＰＵのプログラムカウンタの論理ページアドレスでページアドレス変換バッファ保持手段４０３を検索すると、登録されたページポインタを抽出できる。抽出されたページポインタにターゲットＣＰＵのプログラムカウンタのページ内オフセットを加算することで、ターゲットＣＰＵのプログラムカウンタに対応する変換コード保持手段５００の該当ポインタ情報を抽出する。判定手段９００はポインタ情報保持手段４０２から得られた有効／無効情報をみて、有効であれば同時に得られたポインタ情報に従い、変換コード実行手段７００の起動を行う。ポインタ情報保持手段４０２から得られた有効／無効情報が無効であれば、逐次実行手段８００の起動を行う。
【００５２】
以上のように、ページポインタ参照テーブル保持手段とポインタ情報保持手段とページアドレス変換バッファ保持手段を備え、ターゲットＣＰＵのプログラムカウンタのアドレス変換とページ内オフセットによるポインタ参照テーブル保持手段の検索を同時に行うことにより、ターゲットＣＰＵ命令のシミュレーションを高速に行うことができる。
【００５３】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、ターゲットＣＰＵシステムがアドレス変換機構を有する場合に、前記ポインタ参照テーブル保持手段及び実行手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）ターゲットＣＰＵのプログラムが参照する論理ページアドレスと前記論理ページアドレスに対応する物理ページアドレスと前記変換コード保持手段の該当ポインタの対を少なくとも１つを保持するページアドレス変換バッファ保持手段、
（ｂ）ターゲットＣＰＵのプログラムが参照する論理アドレスで前記ページアドレス変換バッファ保持手段を参照し、参照する論理ページアドレスが前記ページアドレス変換バッファ保持手段が保持する論理アドレスと一致し、且つ対に保持しているポインタが有効な場合にページ内オフセットと前記ページアドレス変換バッファ保持手段が保持するポインタに従い変換コード実行手段を起動し、参照する論理ページアドレスが前記ページアドレス変換バッファ保持手段が保持する論理アドレスと一致し、且つ対に保持しているポインタが無効な場合に逐次処理手段を起動し、参照する論理ページアドレスが前記ページアドレス変換バッファ保持手段が保持する論理アドレスと一致しなかった場合に論理アドレスから物理アドレスへの変換を行った後、前記ページポインタ参照テーブル保持手段から該当ポインタを抽出し、ページアドレス変換バッファ保持手段に論理アドレス、物理アドレス、ポインタの対を設定し、設定したポインタに従い逐次処理手段または変換コード実行手段を起動する実行手段。
【００５４】
実施の形態１２．
図１３は、実施の形態１２に係るポインタ参照テーブル保持手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図１３において、バイナリデータは、所定のメモリ容量を１ページとする論理ページの論理ページアドレスを有している。
上記ターゲットＣＰＵは、システムメモリを有し、上記論理ページアドレスと上記論理ページアドレスに対応する上記システムメモリのページアドレスである物理ページアドレスとを記憶している。
命令変換手段３００は、上記読込手段２００により読み込まれたバイナリデータに基づいて、上記ターゲットＣＰＵの命令コードを上記ターゲットＣＰＵのシステムメモリのページ単位で変換して命令列を生成する。
変換コード保持手段５００は、上記命令変換手段３００により生成された命令列を保持する。
ページポインタ参照テーブル保持手段４０１はターゲットＣＰＵの物理ページアドレスと変換コード保持手段５００の該当ポインタの対を保持する。
ポインタ情報保持手段４０４はターゲットＣＰＵのページ単位で管理され、逐次実行手段８００のポインタを保持する専用エリアをもち、ターゲットＣＰＵのページ先頭から順に変換コード保持手段５００のポインタを保持する。
ページアドレス変換バッファ保持手段４０３はターゲットＣＰＵの論理ページアドレスと論理ページアドレスに対応する物理ページアドレスと物理ページアドレスに対応する変換コード保持手段５００の該当ポインタの対を保持する。言いかえると、ページアドレス変換バッファ保持手段４０３は、上記ターゲットＣＰＵに記憶された論理ページアドレスと上記論理ページアドレスに対応する物理ページアドレスと上記変換コード保持手段５００により保持された命令列のアドレスとを対応させて保持する。
ポインタ参照テーブル保持手段４００はページポインタ参照テーブル保持手段４０１とポインタ情報保持手段４０４とページアドレス変換バッファ保持手段４０３を具備する。
変換コード実行手段７００は変換された変換コードを実行する。
逐次実行手段８００は命令の取り出し、命令の解釈、命令の実行を逐次的に行う。
アドレス変換機構１０００はターゲットＣＰＵシステムのアドレス変換機構である。
実行手段６００は変換コード実行手段７００、逐次実行手段８００を具備する。上記実行手段６００は、次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスをページアドレス変換バッファ保持手段４０３により対応させられて保持された論理ページアドレスと物理ページアドレスと命令列のアドレスとから検索する。
実行情報保持手段の一例としてポインタ情報保持手段４０４は、上記実行手段６００により次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスがページアドレス変換バッファ保持手段４０３から検索されない場合に、上記実行手段６００に上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行させる識別情報を保持し、上記実行手段６００により次にターゲットＣＰＵが実行する命令コードのアドレスが存在する論理ページアドレスがページアドレス変換バッファ保持手段４０３から検索される場合に、上記実行手段６００に上記変換コード保持手段５００により保持された命令列の中からターゲットＣＰＵが実行する命令コードに対応する変換コードを実行させる上記変換コードを保持する。
【００５５】
次に動作について図１３を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態１２では、命令変換手段３００がターゲットＣＰＵ命令をホストＣＰＵの命令列に変換する際は、ターゲットＣＰＵシステムの物理メモリをページ単位で命令変換を行う。変換された命令は、変換コード保持手段５００に格納される。同時にターゲットＣＰＵの物理ページアドレスと変換コード保持手段５００に格納したポインタの対をページポインタ参照テーブル保持手段４０１に格納する．あわせて、ターゲットＣＰＵの物理ページ単位で管理され、逐次実行手段８００のポインタを保持する専用エリアをもち、ターゲットＣＰＵのページ先頭から順に変換コード保持手段５００のポインタを保持するポインタ情報保持手段４０２を設定する。命令変換手段３００はターゲットＣＰＵバイナリデータ１００の命令エリア、データエリアの区別なく変換するため、ターゲットＣＰＵ無効な命令コードと判断した場合には、逐次実行手段８００のポインタを設定する。
ターゲットＣＰＵ命令のシミュレーション時には、設定されたターゲットＣＰＵのプログラムカウンタの論理ページアドレスを元にページアドレス変換バッファ４０３の検索を行う。ページアドレス変換バッファ保持手段は、ターゲットＣＰＵ命令の変換時には設定されないため、ターゲットＣＰＵのプログラムカウンタの論理ページアドレスは該当アドレスが登録されておらず、ミスとなる。ミスとなった場合には、ターゲットＣＰＵシステムのアドレス変換機構１０００による論理アドレス・物理アドレスの変換を行い、得られた物理アドレスでページポインタ参照テーブル保持手段４０１の検索を行う。ターゲットＣＰＵのプログラムカウンタの論理ページアドレス、ターゲットＣＰＵシステムのアドレス変換機構１０００で得られた物理ページアドレス、ページポインタ参照テーブル保持手段４０１で得られたページポインタをページアドレス変換バッファ保持手段４０３に登録する。ターゲットＣＰＵのプログラムカウンタの論理ページアドレスに対応するページポインタがページポインタ参照テーブル保持手段４０１にない場合には、ポインタ情報保持手段４０４が有する逐次実行手段８００のポインタを示す専用エリアのポインタをページアドレス変換バッファ保持手段４０３に登録する。その後、再度ターゲットＣＰＵのプログラムカウンタの論理ページアドレスでページアドレス変換バッファ保持手段４０３を検索すると、登録されたページポインタを抽出できる。抽出されたページポインタにターゲットＣＰＵのプログラムカウンタのページ内オフセットを加算することで、ターゲットＣＰＵのプログラムカウンタに対応する変換コード保持手段５００の該当ポインタ情報を抽出する。ポインタ情報保持手段４０２から得られたポインタ情報に従い、変換コード実行手段７００又は、逐次実行手段８００の起動を行う。
【００５６】
以上のように、ページポインタ参照テーブル保持手段とポインタ情報保持手段とページアドレス変換バッファ保持手段を備え、ターゲットＣＰＵのプログラムカウンタのアドレス変換とページ内オフセットによるポインタ参照テーブル保持手段の検索を同時に行う、得られたポインタ情報に従い変換コード実行手段あるいは逐次実行手段を起動することにより、ポインタ情報保持手段の出力を判定することなく、ターゲットＣＰＵ命令のシミュレーションに必要な資源を小型化し、ターゲットＣＰＵ命令のシミュレーションを高速に行うことができる。
【００５７】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、前記ポインタ参照テーブル保持手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）逐次実行手段のポインタを保持する専用エリアをもつポインタ情報保持手段、
（ｂ）ターゲットＣＰＵのページアドレスと前記変換コード保持手段の該当ポインタの対を保持し、ターゲットＣＰＵの命令が前記変換コード保持手段に保持されていない場合に前記ポインタ情報保持手段の専用エリアのポインタを保持するページポインタ参照テーブル保持手段。
【００５８】
実施の形態１３．
図１４は、実施の形態１３に係る命令変換手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図１４において、変換コード保持手段５００は命令変換手段３００によってターゲットＣＰＵ命令をホストＣＰＵ命令列に変換された変換コードを格納する。上記変換コード保持手段５００は、上記変換コードを保持するための所定の容量を有している。
ポインタ参照テーブル保持手段４００はターゲットＣＰＵのプログラムカウンタと変換コード保持手段５００のポインタの対保持する。言いかえると、テーブル保持手段の一例であるポインタ参照テーブル保持手段４００は、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードのアドレスと上記変換コード保持手段５００により保持された変換コードのアドレスとを対応させた対応テーブルを保持する。
容量オーバーフロー検出手段３０１はポインタ参照テーブル保持手段４００及び変換コード保持手段５００の容量をチェックし、容量オーバーフローを検出する。言いかえると、容量オーバーフロー検出手段３０１は、生成された変換コードの容量が、上記変換コード保持手段５００の容量を超えたことを検出する。上記容量オーバーフロー検出手段３０１は、さらに、上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードのアドレスと上記変換コード保持手段５００により保持された変換コードのアドレスとを対応させた対応テーブルの容量が、上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の容量を超えたことを検出する。
容量拡張手段３０２は容量オーバーフロー検出手段３０１によって検出された容量オーバーフローの情報に従い、ポインタ参照テーブル保持手段４００あるいは変換コード保持手段５００の容量を拡張する。言いかえると、容量拡張手段３０２は、上記容量オーバーフロー検出手段３０１により、変換コードの容量が上記変換コード保持手段５００の容量を超えたと検出された場合に、上記変換コード保持手段５００の容量を拡張することを促す。上記容量拡張手段３０２は、さらに、上記容量オーバーフロー検出手段３０１により、対応テーブルの容量が上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の容量を超えたと検出された場合に、上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の容量を拡張することを促す。
拡張部４０５は容量拡張手段３０２によって拡張されたポインタ参照テーブル保持手段４００の拡張部、拡張部５０１は容量拡張手段３０２によって拡張された変換コード保持手段５００の拡張部である。
命令変換手段３００は容量オーバーフロー検出手段３０１と容量拡張手段３０２を具備する。
【００５９】
次に動作について図１４を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態１３では、命令変換手段３００がターゲットＣＰＵ命令をホストＣＰＵ命令列に変換し、変換コード保持手段５００に変換したホストＣＰＵ命令列を格納し、ポインタ参照テーブル保持手段４００にターゲットＣＰＵアドレスと変換コード保持手段５００のポインタを格納する。その時、容量オーバーフロー検出手段３０１は、変換コード保持手段５００及びポインタ参照テーブル保持手段４００の残容量を観測し、残容量が規定値以下になると容量オーバーフローを検出し、容量拡張手段３０２に通報する。容量オーバーフロー検出手段３０１からの通報に従い、容量拡張手段３０２はポインタ参照テーブル保持手段４００あるいは変換コード保持手段５００の容量の拡張を行う。命令変換手段３００は変換すべきターゲットＣＰＵ命令がなくなるまで、上記動作を繰り返し、全てのエリアの変換を行う。
【００６０】
以上のように、容量オーバーフロー検出手段及び容量拡張手段を備え、ターゲットＣＰＵ命令のホストＣＰＵ命令列への変換時に容量を拡張することにより、ターゲットＣＰＵバイナリデータのサイズによらず、ターゲットＣＰＵ命令のシミュレーションを行うことができる。
【００６１】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、予め準備したポインタ参照テーブル保持手段及び変換コード保持手段の容量を越えるターゲットＣＰＵプログラムを変換した場合に命令変換手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）前記命令変換手段がターゲットＣＰＵプログラムの変換を行う際に、予め準備したポインタ参照テーブル保持手段及び変換コード保持手段の容量を超えたことを検出する容量オーバーフロー検出手段、
（ｂ）前記容量オーバーフロー検出手段により、予め準備したポインタ参照テーブル保持手段及び変換コード保持手段の容量を超えたことを認識し、ポインタ参照テーブル保持手段及び変換コード保持手段を拡張する容量拡張手段。
【００６２】
実施の形態１４．
図１５は、実施の形態１４に係る実行手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図１５において、ポインタ参照テーブル保持手段４００はターゲットＣＰＵのプログラムカウンタと変換コード保持手段５００のポインタの対保持する。
変換コード実行手段７００は変換された変換コードを実行する。
逐次実行手段８００は命令の取り出し、命令の解釈、命令の実行を逐次的に行う。
メモリ１１００はターゲットＣＰＵシステムのメモリである。
メモリ更新検出手段６０１は変換コード実行手段７００あるいは逐次実行手段８００がターゲットＣＰＵ命令のシミュレーションを行った際にターゲットＣＰＵシステムのメモリ１１００へのメモリ更新要求を検出する。言いかえると、メモリ更新検出手段６０１は、ターゲットＣＰＵのメモリ更新時に、メモリ更新アドレスを元に上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の対応テーブルを参照し、該当アドレスが上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００により保持されているかを検出する。
ポインタ参照テーブル更新手段６０２はメモリ更新検出手段６０１が通報するメモリ更新要求及びメモリ更新アドレスを元にポインタ参照テーブル保持手段４００に保持されたテーブルのメモリ更新アドレスに対応するポインタを無効化する。言いかえると、保持更新手段の一例としてポインタ参照テーブル更新手段６０２は、上記メモリ更新検出手段６０１により該当アドレスが上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の対応テーブルにより保持されていると検出された場合に、メモリ更新によって、上記有効／無効情報保持手段の一例であるポインタ情報保持手段４０２により保持された有効／無効情報を無効な命令列に更新させる。保持更新手段の一例としてポインタ参照テーブル更新手段６０２は、上記メモリ更新検出手段６０１により該当アドレスが上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の対応テーブルに保持されていると検出された場合に、メモリ更新によって、上記実行情報保持手段の一例であるポインタ情報保持手段４０４により保持された上記変換コードを、上記実行手段６００に上記読込手段２００により読み込まれたバイナリデータが有するターゲットＣＰＵの命令コードを実行させる識別情報に更新させる。
実行手段６００は変換コード実行手段７００、逐次実行手段８００、メモリ更新検出手段６０１、ポインタ参照テーブル更新手段６０２を具備する。
【００６３】
次に動作について図１５を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態１４では、変換コード実行手段７００あるいは逐次実行手段８００がターゲットＣＰＵ命令のシミュレーションを行った際に、具体的には、ターゲットＣＰＵ命令のストア命令等ターゲットＣＰＵシステムのメモリ１１００を更新する命令を実行した場合に、メモリ更新検出手段６０１はターゲットＣＰＵシステムのメモリ１１００へのメモリ参照要求を観測し、メモリ更新要求を検出すると、ポインタ参照テーブル保持手段４００に格納されているターゲットＣＰＵの全命令アドレスとメモリ更新アドレスの比較を行う。これは、ターゲットＣＰＵ命令の実行により、命令変換手段３００で変換した命令が書きかえられることの検出を行う。この検出がない場合には、書きかえられた命令を実行せずに、書きかえられる前の命令を実行する可能性があるためである。メモリ更新検出手段６０１は、命令変換手段３００によって変換されたエリアのデータが更新されたことを検出すると、ポインタ参照テーブル更新手段６０２にメモリ更新アドレスとポインタ参照テーブル保持手段４００の更新要求を通報する。通報を受けたポインタ参照テーブル更新手段６０２は、メモリ更新アドレスに対応するポインタ参照テーブル保持手段４００が保持している変換コード保持手段５００へのポインタを無効化する。ターゲットＣＰＵ命令の実行で、無効化されたポインタに対するターゲットＣＰＵ命令のアドレスの実行が起きた場合には、ポインタが無効化されているため、逐次実行手段８００が起動される。逐次実行手段８００は、命令の取り出しから行うため、更新されたメモリ情報に従い、命令の解釈、命令の実行が行われる。
【００６４】
以上のように、メモリ更新検出手段とポインタ参照テーブル更新手段を備え、命令変換手段により変換されたエリアに対するメモリ更新を検出し、ポインタ参照テーブル保持手段の該当情報を無効化することにより、ターゲットＣＰＵの命令が命令を書きかえる場合においても、ターゲットＣＰＵの動作をホストＣＰＵ上で支障なくシミュレーションすることができる。
【００６５】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、前記実行手段に以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）ターゲットＣＰＵのメモリ更新時に、メモリ更新アドレスを元にポインタ参照テーブル保持手段を参照し、該当アドレスがポインタ参照テーブル保持手段に含まれているかを検出するメモリ更新検出手段、
（ｂ）前記検出手段でメモリ更新によって、ポインタ参照テーブル保持手段が保持するポインタあるいは有効／無効情報を、逐次実行手段のポインタあるいは無効情報に更新するポインタ参照テーブル更新手段。
【００６６】
実施の形態１５．
図１６は、実施の形態１５に係る実行手段の構成を示すブロック図である。以下に記載する図に無い構成は、既に記載した上記各図の少なくとも１つに記載した構成と同様である。
図１６において、ポインタ参照テーブル保持手段４００はターゲットＣＰＵのプログラムカウンタと変換コード保持手段５００のポインタの対保持する。
変換コード実行手段７００は変換された変換コードを実行する。
逐次実行手段８００は命令の取り出し、命令の解釈、命令の実行を逐次的に行う。
メモリ１１００はターゲットＣＰＵシステムのメモリである。
メモリ更新検出手段６０１は変換コード実行手段７００あるいは逐次実行手段８００がターゲットＣＰＵ命令のシミュレーションを行った際にターゲットＣＰＵシステムのメモリ１１００へのメモリ更新要求を検出する。言いかえると、メモリ更新検出手段６０１は、ターゲットＣＰＵのメモリ更新時に、メモリ更新アドレスを元に上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００により保持された対応テーブルから、該当アドレスが上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００により保持されているかを検出する。
命令再変換手段６０３はメモリ更新検出手段６０１が通報するメモリ更新要求及びメモリ更新アドレスを元にターゲットＣＰＵシステムのメモリ１１００からターゲットＣＰＵ命令を取り出し、ホストＣＰＵの命令列に再変換し、ポインタ参照テーブル４００及び変換コード保持手段５００を更新する。言いかえると、命令再変換手段６０３は、上記メモリ更新検出手段６０１により該当アドレスが上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の対応テーブルに保持されていると検出された場合に、メモリ更新によって、変換コードを再生成し、再生成された新しい変換コードを上記テーブル保持手段の一例であるポインタ参照テーブル保持手段４００の対応テーブルに再設定する。
実行手段６００は変換コード実行手段７００、逐次実行手段８００、メモリ更新検出手段６０１、命令再変換手段６０３を具備する。
【００６７】
次に動作について図１６を例に説明する。
基本的な動作は、実施の形態１で示した動作を行う。実施の形態１５では、変換コード実行手段７００あるいは逐次実行手段８００がターゲットＣＰＵ命令のシミュレーションを行った際に、具体的には、ターゲットＣＰＵ命令のストア命令等ターゲットＣＰＵシステムのメモリ１１００を更新する命令を実行した場合に、メモリ更新検出手段６０１はターゲットＣＰＵシステムのメモリ１１００へのメモリ参照要求を観測し、メモリ更新要求を検出すると、ポインタ参照テーブル保持手段４００に格納されているターゲットＣＰＵの全命令アドレスとメモリ更新アドレスの比較を行う。これは、ターゲットＣＰＵ命令の実行により、命令変換手段３００で変換した命令が書きかえられることの検出を行う。この検出がない場合には、書きかえられた命令を実行せずに、書きかえられる前の命令を実行する可能性があるためである。メモリ更新検出手段６０１は、命令変換手段３００によって変換されたエリアのデータが更新されたことを検出すると、命令再変換手段６０３にメモリ更新アドレスと命令再変換要求を通報する。通報を受けた命令再変換手段６０３は、メモリ更新アドレスが示すデータをターゲットＣＰＵシステムのメモリ１１００から命令として取り出す。取り出したターゲットＣＰＵ命令を再度、ホストＣＰＵ命令列に変換し、変換コード保持手段５００を更新すると同時にポインタ参照テーブル保持手段の更新を行う。ターゲットＣＰＵ命令の実行で、更新されたポインタに対するターゲットＣＰＵ命令のアドレスの実行が起きた場合には、ポインタ参照テーブル保持手段４００及び変換コード保持手段５００が保持する変換コードは更新されているため、変換コード実行手段７００が起動される。変換コード実行手段７００の起動では、再変換された変換コードが実行されるため、メモリ更新後の命令に従い、ターゲットＣＰＵ命令が実行される。
【００６８】
以上のように、メモリ更新検出手段と命令再変換手段を備え、命令変換手段により変換されたエリアに対するメモリ更新を検出し、ポインタ参照テーブル保持手段及び変換コード保持手段を命令再変換手段によって更新することにより、ターゲットＣＰＵの命令が命令を書きかえる場合においても、ターゲットＣＰＵの動作をホストＣＰＵ上で支障なくシミュレーションすることができる。
【００６９】
以上のように、本実施の形態におけるＣＰＵシミュレーション方式は、以下の手段を備えたＣＰＵシミュレーション方式である。
（ａ）ターゲットＣＰＵのメモリ更新時に、メモリ更新アドレスを元にポインタ参照テーブル保持手段を参照し、該当アドレスがポインタ参照テーブル保持手段に含まれているかを検出するメモリ更新検出手段、
（ｂ）前記検出手段でメモリ更新によって、更新されたメモリ情報に基づき、更新されたメモリを参照する可能性のある変換コードを再生成し、新しい変換コードの格納場所のポインタをポインタ参照テーブル保持手段に再設定する命令再変換手段。
【００７０】
以上の説明において、上記各実施の形態におけるシミュレーション装置は、以下のハードウェア構成を有している。
図１７は、上記各実施の形態におけるシミュレーション装置の外観を示す図である。
図１７において、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）表示装置４１、キーボード（Ｋ／Ｂ）４２、マウス４３、コンパクトディスク装置（ＣＤＤ）８６、プリンタ装置８７、スキャナ装置８８は、パーソナルコンピュータ（ＰＣ）３３にケーブルで接続されている。
【００７１】
図１８は、上記各実施の形態におけるシミュレーション装置のハードウェア構成図である。
図１８において、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３７は、バス３８を介してＲＯＭ（Ｒｅａｄ  ＯｎｌｙＭｅｍｏｒｙ）３９（記憶装置、システムメモリの一例である）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０（記憶装置、システムメモリの一例である）、ＣＲＴ表示装置４１、Ｋ／Ｂ４２、マウス４３、通信ポード４４、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）４５、磁気ディスク装置４６、ＣＤＤ８６、プリンタ装置８７、スキャナ装置８８と接続されている。通信ボード４４は、インターネット３０に接続されている。
ここで、通信ボード４４は、インターネット３０に限らず、ＬＡＮ（ローカルエリアネットワーク）、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。
磁気ディスク装置４６には、オペレーティングシステム（ＯＳ）４７、ウィンドウシステム４８、プログラム群４９、ファイル群５０が記憶されている。プログラム群４９は、ＣＰＵ３７、ＯＳ４７、ウィンドウシステム４８により実行される。
【００７２】
また、以上の説明において、各実施の形態の説明において「〜手段」として説明したものは、一部或いはすべてコンピュータで動作可能なプログラムにより構成することができる。即ち、磁気ディスク装置４６は、コンピュータで動作可能なプログラムを記録した記録媒体である。これらのプログラムは、例えば、Ｃ言語により作成することができる。或いは、ＨＴＭＬやＳＧＭＬやＸＭＬを用いても構わない。或いは、ＪＡＶＡ（登録商標）を用いて画面表示を行っても構わない。
また、各実施の形態の説明において「〜手段」として説明したものは、ＲＯＭ３９に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェア或いは、ハードウェア或いは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
また、上記各実施の形態を実施させるプログラムは、また、磁気ディスク装置４６の代わりに、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置（記憶装置、システムメモリの一例である）を用いても構わない。
また、ＣＲＴ表示装置４１の代わりに、その他の表示装置、プリンタ装置８７等の出力装置を用いても構わない。
【００７３】
【発明の効果】
本発明によれば、ポインタ参照テーブルに登録されているかどうか、または登録された情報が有効であるか無効であるかを判断し、ターゲットＣＰＵ命令のシミュレーション手段を切り替えることで、ターゲットＣＰＵのプログラムがプログラムをロード、生成、または更新するような場合でも、ターゲットＣＰＵの動作をホストＣＰＵ上で支障なくシミュレーションすることができる。
【図面の簡単な説明】
【図１】実施の形態１にかかるＣＰＵシミュレーション装置の構成を示す構成図である。
【図２】ホストＣＰＵ上で動作するＣＰＵシミュレーン方式のフローチャートを示す図である。
【図３】実施の形態２に係るターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。
【図４】実施の形態３に係るターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。
【図５】実施の形態４に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段の構成を示すブロック図である。
【図６】実施の形態５に係るターゲットＣＰＵの命令コードを含むバイナリデータがオペレーティングシステムなどのようにメモリ管理機能を有するプログラムである場合の読込手段の構成を示すブロック図である。
【図７】実施の形態６に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段の構成を示すブロック図である。
【図８】実施の形態７に係るターゲットＣＰＵの命令コードを含むバイナリデータがオペレーティングシステムなどのようにメモリ管理機能を有するプログラムである場合の読込手段の構成を示すブロック図である。
【図９】実施の形態８に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段及びターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。
【図１０】実施の形態９に係るターゲットＣＰＵの命令コードを含むバイナリデータの読込手段及びターゲットＣＰＵのプログラムカウンタがポインタ参照テーブル保持手段に格納されているかを判定する判定手段の構成を示すブロック図である。
【図１１】実施の形態１０に係るポインタ参照テーブル保持手段、及び、逐次実行手段と変換コード実行手段を切り替えてターゲットＣＰＵ命令を実行する実行手段の構成を示すブロック図である。
【図１２】実施の形態１１に係るポインタ参照テーブル保持手段の構成を示すブロック図である。
【図１３】実施の形態１２に係るポインタ参照テーブル保持手段の構成を示すブロック図である。
【図１４】実施の形態１３に係る命令変換手段の構成を示すブロック図である。
【図１５】実施の形態１４に係る実行手段の構成を示すブロック図である。
【図１６】実施の形態１５に係る実行手段の構成を示すブロック図である。
【図１７】各実施の形態におけるシミュレーション装置の外観を示す図である。
【図１８】各実施の形態におけるシミュレーション装置のハードウェア構成図である。
【符号の説明】
３７  ＣＰＵ、３８  バス、３９  ＲＯＭ、４０  ＲＡＭ、４１  ＣＲＴ、４２  Ｋ／Ｂ、４３  マウス、４４  通信ポート、４５  ＦＤＤ、４６  磁気ディスク装置、４７  ＯＳ、４８  ウィンドウシステム、４９  プログラム群、５０ファイル群、８６  ＣＤＤ、８７  プリンタ、８８  スキャナ、１００  ターゲットＣＰＵバイナリデータ、１０１  メモリ管理テーブル、２００  読み込み手段、２０１  変換エリア情報設定手段、２０２  変換エリア情報指示手段、２０３  変換エリア情報設定手段、２０４  変換エリア情報設定手段、２０５  変換エリア情報指示手段、２０６  変換エリア情報設定手段、３００  命令変換手段、３０１  容量オーバーフロー検出手段、３０２  容量拡張手段、４００  ポインタ参照テーブル保持手段、４０１  ページポインタ参照テーブル保持手段、４０２  ポインタ情報保持手段、４０３  ページアドレス変換バッファ保持手段、４０４  ポインタｈ情報保持手段、４０５  拡張部、５００  変換コード保持手段、５０１  拡張部、６００  実行手段、６０１  メモリ更新検出手段、６０２  ポインタ参照テーブル更新手段、６０３  命令再変換手段、７００  変換コード実行手段、８００  逐次実行手段、９００  判定手段、９０１  変換エリア情報設定手段、９０２  変換エリア情報保持手段、９０３  比較手段、９０４  変換エリア情報設定手段、９０５  変換エリア情報保持手段、９０６  比較手段、１１００  メモリ。
【図１】
2004185527.tif 000003
【図２】
2004185527.tif 000004
【図３】
2004185527.tif 000005
【図４】
2004185527.tif 000006
【図５】
2004185527.tif 000007
【図６】
2004185527.tif 000008
【図７】
2004185527.tif 000009
【図８】
2004185527.tif 000010
【図９】
2004185527.tif 000011
【図１０】
2004185527.tif 000012
【図１１】
2004185527.tif 000013
【図１２】
2004185527.tif 000014
【図１３】
2004185527.tif 000015
【図１４】
2004185527.tif 000016
【図１５】
2004185527.tif 000017
【図１６】
2004185527.tif 000018
【図１７】
2004185527.tif 000019
【図１８】
2004185527.tif 000020