(57)【要約】【課題】従来技術のシミュレータ（シミュレーション装置）では、命令がデバッガのメモリウィンドウなどで直接編集された場合、デコード・キャッシュの内容と異なってしまい、正しい命令の実行が行えない。【解決手段】シミュレータ（シミュレーション装置）は、メモリが書き換えられ、その内容が命令であれば、該当する命令のデコード・キャッシュに変更フラグを立てる命令変更通知部と、該当命令実行時に、デコード・キャッシュに変更フラグがあるかを検出し、変更フラグがあれば、再フェッチ・デコードを行う実行シミュレーション部を有する。【選択図】図１
2011060080.tif 000002
【特許請求の範囲】
【請求項１】
メモリが書き換えられた際、書き換えられた内容が命令であれば、当該命令のデコード・キャッシュに変更フラグを立てる命令変更通知部と、
命令の実行時に、前記命令のデコード・キャッシュに変更フラグがあるか確認し、前記デコード・キャッシュに変更フラグがあれば、再フェッチ・デコードを行う実行シミュレーション部と
を具備する
シミュレーション装置。
【請求項２】
請求項１に記載のシミュレーション装置であって、
前記実行シミュレーション部は、
前記命令の実行時に、前記デコード・キャッシュ上で、前記命令と一致するアドレスを検索し、前記命令のデコード情報がキャッシュされていないか検索を行う実行管理部と、
前記命令のデコード情報がキャッシュされていない場合、フェッチ・デコードを行い、前記デコード・キャッシュにアドレスとデコード情報を登録するフェッチ・デコード部と、
前記命令のデコード情報がキャッシュされていない場合、前記フェッチ・デコード部により前記デコード・キャッシュに登録されたデコード情報を使って前記命令を実行し、前記命令のデコード情報がキャッシュされている場合、前記キャッシュされているデコード情報を使って前記命令を実行する実行部と
を更に具備する
シミュレーション装置。
【請求項３】
請求項２に記載のシミュレーション装置であって、
前記フェッチ・デコード部は、前記実行シミュレーション部が前記デコード・キャッシュ上の前記命令に変更フラグが立っていることを発見した場合には、再フェッチ・デコードを行い、既存のデコード情報を更新し、変更フラグをリセットする
シミュレーション装置。
【請求項４】
請求項１乃至３のいずれか一項に記載のシミュレーション装置であって、
メモリをシミュレーションするメモリシミュレーション部と、
実行コマンドが入力されると、前記入力された実行コマンドが一命令実行コマンドかどうか判定し、前記入力された実行コマンドが一命令実行コマンドでなければ、前記入力された実行コマンドがメモリ書換えコマンドかどうか判定するコマンド入力部と、
前記入力された実行コマンドが一命令実行コマンドであれば、前記一命令実行コマンドを前記実行シミュレーション部へ通知する実行コマンド処理部と、
前記入力された実行コマンドがメモリ書換えコマンドであれば、前記メモリ書換えコマンドを前記メモリシミュレーション部へ通知するメモリ書き込み処理部と
を更に具備する
シミュレーション装置。
【請求項５】
請求項４に記載のシミュレーション装置であって、
前記メモリシミュレーション部は、前記メモリ書換えコマンドに応じて、メモリの内容を書き換え、前記メモリ書換えコマンドが前記命令に対する書き換え要求であったかどうか確認し、
前記命令変更通知部は、前記メモリ書換えコマンドが前記命令に対する書き換え要求であった場合、前記メモリシミュレーション部によるメモリ書換え後に、前記デコード・キャッシュの該当場所に変更フラグをセットする
シミュレーション装置。
【請求項６】
コンピュータにより実施されるシミュレーション方法であって、
メモリが書き換えられた際、書き換えられた内容が命令であれば、当該命令のデコード・キャッシュに変更フラグを立て、
命令の実行時に、前記命令のデコード・キャッシュに変更フラグがあるか確認し、前記デコード・キャッシュに変更フラグがあれば、再フェッチ・デコードを行う
シミュレーション方法。
【請求項７】
請求項６に記載のシミュレーション方法であって、
前記命令の実行時に、前記デコード・キャッシュ上で、前記命令と一致するアドレスを検索し、前記命令のデコード情報がキャッシュされていないか検索を行い、
前記命令のデコード情報がキャッシュされていない場合、フェッチ・デコードを行い、前記デコード・キャッシュにアドレスとデコード情報を登録し、前記デコード・キャッシュに登録されたデコード情報を使って前記命令を実行し、
前記命令のデコード情報がキャッシュされている場合、前記キャッシュされているデコード情報を使って前記命令を実行する
シミュレーション方法。
【請求項８】
請求項７に記載のシミュレーション方法であって、
前記デコード・キャッシュ上の前記命令に変更フラグが立っていることを発見した場合には、再フェッチ・デコードを行い、既存のデコード情報を更新し、変更フラグをリセットする
シミュレーション方法。
【請求項９】
請求項６乃至８のいずれか一項に記載のシミュレーション方法であって、
実行コマンドが入力されると、前記入力された実行コマンドが一命令実行コマンドかどうか判定し、
前記入力された実行コマンドが一命令実行コマンドであれば、前記一命令実行コマンドに基づいて命令実行処理をシミュレーションし、
前記入力された実行コマンドが一命令実行コマンドでなければ、前記入力された実行コマンドがメモリ書換えコマンドかどうか判定し、
前記入力された実行コマンドがメモリ書換えコマンドであれば、前記メモリ書換えコマンドに基づいてメモリの内容を書き換える
シミュレーション方法。
【請求項１０】
請求項９に記載のシミュレーション方法であって、
前記メモリ書換えコマンドに基づいてメモリの内容を書き換えた際、前記メモリ書換えコマンドが前記命令に対する書き換え要求であったかどうか確認し、
前記メモリ書換えコマンドが前記命令に対する書き換え要求であった場合、メモリ書換え後に、前記デコード・キャッシュの該当場所に変更フラグをセットする
シミュレーション方法。
【請求項１１】
コンピュータにより実施されるシミュレーション用プログラムであって、
メモリが書き換えられた際、書き換えられた内容が命令であれば、当該命令のデコード・キャッシュに変更フラグを立てるステップと、
命令の実行時に、前記命令のデコード・キャッシュに変更フラグがあるか確認し、前記デコード・キャッシュに変更フラグがあれば、再フェッチ・デコードを行うステップと
をコンピュータに実行させるための
シミュレーション用プログラム。
【請求項１２】
請求項１１に記載のシミュレーション用プログラムであって、
前記命令の実行時に、前記デコード・キャッシュ上で、前記命令と一致するアドレスを検索し、前記命令のデコード情報がキャッシュされていないか検索を行うステップと、
前記命令のデコード情報がキャッシュされていない場合、フェッチ・デコードを行い、前記デコード・キャッシュにアドレスとデコード情報を登録し、前記デコード・キャッシュに登録されたデコード情報を使って前記命令を実行するステップと、
前記命令のデコード情報がキャッシュされている場合、前記キャッシュされているデコード情報を使って前記命令を実行するステップと
を更にコンピュータに実行させるための
シミュレーション用プログラム。
【請求項１３】
請求項１２に記載のシミュレーション用プログラムであって、
前記デコード・キャッシュ上の前記命令に変更フラグが立っていることを発見した場合には、再フェッチ・デコードを行い、既存のデコード情報を更新し、変更フラグをリセットするステップ
を更にコンピュータに実行させるための
シミュレーション用プログラム。
【請求項１４】
請求項１１乃至１３のいずれか一項に記載のシミュレーション用プログラムであって、
実行コマンドが入力されると、前記入力された実行コマンドが一命令実行コマンドかどうか判定するステップと、
前記入力された実行コマンドが一命令実行コマンドであれば、前記一命令実行コマンドに基づいて命令実行処理をシミュレーションするステップと、
前記入力された実行コマンドが一命令実行コマンドでなければ、前記入力された実行コマンドがメモリ書換えコマンドかどうか判定するステップと、
前記入力された実行コマンドがメモリ書換えコマンドであれば、前記メモリ書換えコマンドに基づいてメモリの内容を書き換えるステップと
を更にコンピュータに実行させるための
シミュレーション用プログラム。
【請求項１５】
請求項１４に記載のシミュレーション用プログラムであって、
前記メモリ書換えコマンドに基づいてメモリの内容を書き換えた際、前記メモリ書換えコマンドが前記命令に対する書き換え要求であったかどうか確認するステップと、
前記メモリ書換えコマンドが前記命令に対する書き換え要求であった場合、メモリ書換え後に、前記デコード・キャッシュの該当場所に変更フラグをセットするステップと
を更にコンピュータに実行させるための
シミュレーション用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置に関し、特にマイコンの動作をシミュレーションしデバッグするシミュレーション装置に関する。
【背景技術】
【０００２】
ここでは、計算機等の動作をシミュレーションするシミュレーション装置をシミュレータと呼ぶ。従来技術のシミュレータの一例として、特開２００５−６３１６５号公報（特許文献１）に仮想計算機の高速エミュレータが開示されている。この従来技術では、エミュレータに、命令フェッチとデコードの処理の結果を保存しておくデコードキャッシュを設ける。命令の最初の実行時に、デコードキャッシュにデコードした結果を保存しておく。次回の実行の際には保存したキャッシュの内容を再利用する。デコードキャッシュには、仮想命令ポインタをキーとして実行処理ルーチンのアドレスと対応させて保持する。実行処理ルーチンでは、仮想命令に対応した実行処理を行なう。仮想命令ポインタに基づいて命令のフェッチ時にデコードキャッシュを調べ、デコード結果が存在すればそれを使用し、デコード結果が存在しなければ仮想命令ポインタに基づいて命令をデコードし、結果をデコードキャッシュに登録する。
【０００３】
従来技術のシミュレータでは、命令がデバッガのメモリウィンドウ等で直接編集された場合、デコード・キャッシュの内容と異なってしまい、正しい命令の実行が行えない。
【０００４】
従来技術のシミュレータでは、シミュレータに命令フェッチとデコードの処理の結果を保存しておくデコード・キャッシュを設ける。命令の最初の実行時に、デコード・キャッシュにデコードした結果を保存しておく。次回の実行の際には保存したキャッシュの内容を再利用し、実行を高速化することができた。
【０００５】
従来技術の問題点は、命令がデバッガのメモリウィンドウ等で直接編集され、デコード・キャッシュの内容と異なってしまった場合の考慮がない点である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−６３１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来技術の課題であったメモリ上で書き換えが発生した場合の考慮に関して、デコード・キャッシュに変更フラグを追加することで対処する。メモリ上で書き換えが発生した場合には、変更フラグをセットし、実行時に、対象命令のデコード・キャッシュに変更フラグがあれば、再フェッチ・デコードを行うという工夫を行うことで解決を図る。
【課題を解決するための手段】
【０００８】
本発明のシミュレータ（シミュレーション装置）は、命令変更通知部と、実行シミュレーション部を具備する。命令変更通知部は、メモリが書き換えられた際、書き換えられた内容が命令であれば、該当する命令のデコード・キャッシュに変更フラグを立てる。実行シミュレーション部は、該当命令実行時に、デコード・キャッシュに変更フラグがあるかを検出し、変更フラグがあれば、再フェッチ・デコードを行う。
【発明の効果】
【０００９】
メモリ上の変更情報をデコード・キャッシュに通知する手段を確立し、メモリ上に変更があった際、デコード・キャッシュに変更フラグを立て、実行時に変更フラグがあった場合、メモリから再度フェッチ・デコードを行ってから、随時正しい命令実行することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明のシミュレータ（シミュレーション装置）の構成例を示すブロック図である。
【図２Ａ】本発明のシミュレータの動作を示すフローチャートである。
【図２Ｂ】本発明のシミュレータの動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本発明の第１実施形態について添付図面を参照して説明する。
本発明のシミュレータは、マイコンの動作をシミュレーションするシミュレーション装置であり、ＰＣ（パソコン）と、当該ＰＣ上で動くアプリケーションプログラムとの組み合わせにより実現される。本発明のシミュレータを使うことにより、ＰＣ上でマイコンの動作をシミュレーションすることが可能となる。なお、ＰＣは一例に過ぎない。他にも、本発明のシミュレータを実現するハードウェアの例として、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ボード、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ、携帯端末、家庭用ゲーム機、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＰＯＳ（Ｐｏｉｎｔ  ｏｆ  Ｓａｌｅ）端末、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器等が考えられる。また、本発明のシミュレータは、端末やサーバに限らず、中継機器や周辺機器でも良い。但し、実際には、これらの例に限定されない。
【００１２】
図１の本発明のシミュレータの構成図を参考して、説明する。
本発明のシミュレータ（シミュレーション装置）１０は、デバッガ部１１と、シミュレーション部１２を備える。
【００１３】
デバッガ部１１は、コマンド入力部１１１と、実行コマンド処理部１１２と、メモリ書き込み処理部１１３を含む。
【００１４】
シミュレーション部１２は、メモリシミュレーション部１２１と、デコード・キャッシュ１２２と、実行シミュレーション部１２３を含む。
【００１５】
メモリシミュレーション部１２１は、マイコンのメモリをシミュレーションする部分である。デコード・キャッシュ１２２は、命令の先頭アドレスと、デコード情報に加え、命令の書き換えの有無を示す変更フラグを持つ。実行シミュレーション部１２３は、マイコンの命令実行処理をシミュレーションする部分である。
【００１６】
メモリシミュレーション部１２１は、命令変更通知部１２１１を含む。
【００１７】
実行シミュレーション部１２３は、実行管理部１２３１と、フェッチ・デコード部１２３２と、実行部１２３３を含む。
【００１８】
実行対象プログラム１１０は、本発明のシミュレータ１０がシミュレーションするマイコン上で動作する、コンパイラ等で言語処理されたオブジェクトファイルである。この実行対象プログラム１１０は、デバッガ部１１にダウンロードされた際、コマンド入力部１１１から、メモリ書き込み処理部１１３を介してメモリシミュレーション部１２１にダウンロードされる。
【００１９】
コマンド入力部１１１は、実行コマンドが入力されると、入力された実行コマンドを、実行コマンド処理部１１２を介して、実行シミュレーション部１２３の実行管理部１２３１へ通知する。
【００２０】
実行管理部１２３１は、デコード・キャッシュ１２２上で、次に実行する命令と一致するアドレスを検索することで、その命令のデコード情報がキャッシュされていないか検索を行う。フェッチ・デコード部１２３２は、該当命令のデコード情報がない場合、デコードを行い、デコード・キャッシュ１２２にアドレスとデコード情報を登録する。その後、実行部１２３３は、デコード・キャッシュ１２２に登録されたデコード情報を使って、命令実行する。また、実行部１２３３は、該当命令のデコード情報がある場合、そのデコード情報を使って、命令実行する。
【００２１】
但し、実行管理部１２３１がデコード・キャッシュ１２２上の該当命令に変更フラグが立っていることを発見した場合には、フェッチ・デコード部１２３２は、再フェッチ・デコードを行い、デコード情報を更新し、変更フラグをリセットする。実行部１２３３は、更新されたデコード情報を使って、命令実行する。
【００２２】
コマンド入力部１１１から命令に対する書き換え要求があった場合には、メモリ書き込み処理部１１３は、当該書き換え要求をメモリシミュレーション部１２１へ通知する。メモリシミュレーション部１２１によるメモリ書換え後に、命令変更通知部１２１１は、デコード・キャッシュ１２２の該当場所に変更フラグをセットする。
【００２３】
例えば、デバッガ部１１及びシミュレーション部１２は、プログラムで駆動されるＣＰＵ等のハードウェアと、そのハードウェアを駆動して所望の処理を実行するソフトウェアと、そのソフトウェアを格納する記憶装置によって実現される。なお、コマンド入力部１１１は、外部の入力装置や記憶装置から情報を取得するためのインターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）を有していても良い。
【００２４】
デバッガ部１１及びシミュレーション部１２を実現するハードウェアの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、同様の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。但し、実際には、これらの例に限定されない。
【００２５】
デバッガ部１１及びシミュレーション部１２で使用されるプログラムやデータを格納する記憶装置の例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）やメモリカード等の記憶媒体（メディア）等が考えられる。なお、コンピュータ本体に内蔵された記憶装置に限らず、周辺機器（外付けＨＤＤ等）や外部のサーバ（ストレージサーバ等）に設置された記憶装置、或いは、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）でも良い。但し、実際には、これらの例に限定されない。
【００２６】
図２Ａ、図２Ｂに、本発明のシミュレータの動作のフローチャートを示す。
【００２７】
（１）ステップＳ２０１
ユーザ操作あるいは起動設定により、シミュレータ１０を起動する。これにより、シミュレータ１０は、稼動状態となる。
【００２８】
（２）ステップＳ２０２
シミュレータ１０は、シミュレーション／デバッグ対象のプログラム（実行対象プログラム１１０）をダウンロードする。
【００２９】
（３）ステップＳ２０３
その後、シミュレータ１０は、コマンド待ち状態となる。
【００３０】
（４）ステップＳ２０４
シミュレータ１０に対してコマンド実行が行われる。コマンド入力部１１１は、シミュレータ１０がコマンド待ち状態の時に、実行コマンドの入力を受け付ける。
【００３１】
（５）ステップＳ２０５
コマンド入力部１１１は、実行コマンドが入力されると、入力された実行コマンドが一命令実行コマンドかどうか判定する。コマンド入力部１１１は、入力された実行コマンドが一命令実行コマンドであれば、入力された実行コマンドを、実行コマンド処理部１１２を介して、実行シミュレーション部１２３の実行管理部１２３１へ通知する。
【００３２】
（６）ステップＳ２０６
実行管理部１２３１は、通知された実行コマンドに示された命令（対象命令）と一致するアドレスがないか、デコード・キャッシュ１２２を検索する。
【００３３】
（７）ステップＳ２０７
実行管理部１２３１は、デコード・キャッシュ１２２に対象命令のデコード情報がキャッシュされていているかどうか確認することで、対象命令が存在するかどうか確認する。
【００３４】
（８）ステップＳ２０８
実行管理部１２３１は、対象命令のデコード情報がキャッシュされている場合、デコード・キャッシュ１２２上の対象命令に変更フラグがセットされているか確認する。
【００３５】
（９）ステップＳ２０９
フェッチ・デコード部１２３２は、対象命令のデコード情報がキャッシュされていない場合、あるいは変更フラグがセットされていない場合、対象命令が存在しないと判断し、フェッチ・デコードを行う。
【００３６】
（１０）ステップＳ２１０
フェッチ・デコード部１２３２は、フェッチ・デコードを行った結果、得られたデコード情報をデコード・キャッシュ１２２に登録する。
【００３７】
（１１）ステップＳ２１１
フェッチ・デコード部１２３２は、デコード・キャッシュ１２２上の対象命令に変更フラグがセットされていた場合は、変更フラグをリセットする。
【００３８】
（１２）ステップＳ２１２
実行部１２３３は、デコード・キャッシュ１２２上の対象命令に変更フラグがセットされていない状態であれば、そのまま対象命令を実行する。対象命令の実行後、シミュレータ１０は、コマンド待ち状態となる。
【００３９】
（１３）ステップＳ２１３
また、実行部１２３３は、デコード・キャッシュ１２２上に対象命令のデコード情報がキャッシュされていて、変更フラグがセットされていなければ、このデコード情報を基に、対象命令を実行する。対象命令の実行後、シミュレータ１０は、コマンド待ち状態となる。
【００４０】
（１４）ステップＳ２１４
また、コマンド入力部１１１は、入力された実行コマンドが一命令実行コマンドでなければ、入力された実行コマンドがメモリ書換えコマンドかどうか判定する。
【００４１】
（１５）ステップＳ２１５
コマンド入力部１１１は、入力された実行コマンドがメモリ書換えコマンドでない場合、その他のコマンドであったと判断し、その他のコマンドを処理すべき処理部に通知し、その他のコマンドに対する処理を行う。その他のコマンドに対する処理の実行後、シミュレータ１０は、コマンド待ち状態となる。
【００４２】
（１６）ステップＳ２１６
コマンド入力部１１１は、入力された実行コマンドがメモリ書換えコマンドである場合、メモリ書き込み処理部１１３を介して、メモリ書換えコマンドをメモリシミュレーション部１２１へ通知する。メモリシミュレーション部１２１は、メモリ書換えコマンドに応じて、メモリの内容を書き換える。
【００４３】
（１７）ステップＳ２１７
メモリシミュレーション部１２１は、そのメモリ書換えコマンドが対象命令に対する書き換え要求であったかどうか確認する。そのメモリ書換えコマンドが対象命令に対する書き換え要求でなかった場合、シミュレータ１０は、コマンド待ち状態となる。
【００４４】
（１８）ステップＳ２１８
命令変更通知部１２１１は、そのメモリ書換えコマンドが対象命令に対する書き換え要求であった場合、デコード・キャッシュ１２２の該当場所に変更フラグをセットする。
【００４５】
以下に、実際の動作の全体概要（実施例）について説明する。
本発明のシミュレータ１０を起動し（ステップＳ２０１）、シミュレーション／デバッグ対象のプログラムをダウンロードする（ステップＳ２０２）。
【００４６】
その後、シミュレータ１０は、コマンド待ち（ステップＳ２０３）状態となるが、コマンド実行され（ステップＳ２０４）、そのコマンドが一命令実行コマンドであれば（ステップＳ２０５）、デコード・キャッシュ１２２を検索し（ステップＳ２０６）、対象命令が存在しない場合には、フェッチ・デコードを行い（ステップＳ２０９）、デコード・キャッシュ１２２に登録する（ステップＳ２１０）。変更フラグもセットされていない場合は（ステップＳ２１１）、そのまま実行を行う（ステップＳ２１２）。
【００４７】
次に、シミュレータ１０は、この命令を実行する際に、デコード・キャッシュ１２２を検索して（ステップＳ２０６）、対象命令のデコード情報がキャッシュされていて（ステップＳ２０７）、変更フラグがセットされていなければ（ステップＳ２０８）、このデコード情報を基に実行できる（ステップＳ２１３）。
【００４８】
メモリ書換えコマンド（ステップＳ２１４）を使って、命令の書換え要求が来た場合には、本発明のシミュレータ１０はメモリの内容を書き換えた後（ステップＳ２１６）、その書き換えた領域が命令であることを確認して（ステップＳ２１７）、デコード・キャッシュ１２２の該当命令に変更フラグをセットする（ステップＳ２１８）。
【００４９】
その後、変更された命令を実行する際には、デコード・キャッシュ１２２を検索し（ステップＳ２０６）、その対象命令情報があっても（ステップＳ２０７）、変更フラグがあることから（ステップＳ２０８）、再フェッチ・デコードが必要と判断し、デコード・キャッシュ１２２に再登録し（ステップＳ２１０）、変更フラグをクリアし（ステップＳ２１１）、実行を行う（ステップＳ２１２）。
【００５０】
こうして、命令の書換えが発生した場合に、正しく命令実行が行える。
【００５１】
このように、本発明のシミュレータでは、メモリシミュレーション部に、メモリを書換えた時に、その書き換えたメモリが命令であれば、デコード・キャッシュに変更フラグを立てる命令変更通知部を用意し、命令の書換えを実行時に検知する実行管理部を用意することで、命令が書き換われた場合も、正しく実行できるようにした。
【００５２】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【００５３】
１０…  シミュレータ（シミュレーション装置）
１１…  デバッガ部
１１０…  実行対象プログラム
１１１…  コマンド入力部
１１２…  実行コマンド処理部
１１３…  メモリ書き込み処理部
１２…  シミュレーション部
１２１…  メモリシミュレーション部
１２１１…  命令変更通知部
１２２…  デコード・キャッシュ
１２３…  実行シミュレーション部
１２３１…  実行管理部
１２３２…  フェッチ・デコード部
１２３３…  実行部
【図１】
2011060080.tif 000003
【図２Ａ】
2011060080.tif 000004
【図２Ｂ】
2011060080.tif 000005