(57)【要約】【課題】複数の演算フラグが設定される命令セットシミュレーションの高速化を実現する。【解決手段】ホスト命令実行部１０４は、複数の演算フラグが設定された演算命令のうち、条件分岐命令が使用する演算フラグに対応付けられ最後に実行される演算命令を条件分岐命令が使用する演算フラグ毎に選択する。そして、ホスト命令実行部１０４は、選択した演算命令の演算フラグのうち条件分岐命令が使用する演算フラグのみフラグ値を算出し、選択されなかった演算命令のフラグ値算出を省略することで、命令セットシミュレーションの高速化を実現する。【選択図】図１
2013120419.tif 000002
【特許請求の範囲】
【請求項１】
実行順序が指定されている複数の演算命令を実行する演算命令実行部と、
前記演算命令実行部が前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択部と、
前記複数の演算命令のうち前記演算命令選択部による選択候補となる１つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種のカテゴリーのうちの１つ以上のカテゴリーに分類するカテゴリー情報を記憶するカテゴリー情報記憶部とを備え、
前記演算命令選択部は、
前記選択タイミングにおいて、
前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知され、
選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行部によって実行が完了した選択候補演算命令を選択することを特徴とする情報処理装置。
【請求項２】
前記演算命令実行部は、
分類されたカテゴリーのうちの少なくとも１つが相互に異なる２つ以上の選択候補演算命令を、前記複数の演算命令の少なくとも一部として実行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記演算命令実行部は、
選択候補演算命令を実行する度に、実行した選択候補演算命令が示される選択候補情報を生成し、実行した選択候補演算命令が分類されているカテゴリーに対応付けて選択候補情報を出力し、
前記情報処理装置は、更に、
前記演算命令実行部により出力された選択候補情報をカテゴリーに対応付けて記憶する選択候補情報記憶部を備え、
前記演算命令選択部は、
前記選択タイミングにおいて、
前記選択候補情報記憶部によりカテゴリーに対応付けられて記憶されている選択候補情報のうち、選択対象カテゴリーに対応付けられ、前記演算命令実行部により最後に出力された選択候補情報に示される選択候補演算命令を選択することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記カテゴリー情報記憶部は、
演算値の状態を判別するために用いられる複数種の判別基準に対応させて複数種のカテゴリーが定義され、
いずれの判別基準が用いられて各選択候補演算命令の演算値の状態が判別されるかにより、各選択候補演算命令が前記複数種のカテゴリーのうちの１つ以上のカテゴリーに分類されているカテゴリー情報を記憶し、
前記情報処理装置は、更に、
前記演算命令選択部により選択候補演算命令が選択された後に、選択された選択候補演算命令を実行して演算値を算出し、前記選択対象カテゴリーに対応する判別基準を用いて、算出した演算値の状態を判別する状態判別部を備えることを特徴とする請求項１〜３いずれか記載の情報処理装置。
【請求項５】
前記カテゴリー情報記憶部は、
演算値の状態を判別するために用いられる複数種の判別基準に対応させて複数種のカテゴリーが定義され、
いずれの判別基準が用いられて各選択候補演算命令の演算値の状態が判別されるかにより、各選択候補演算命令が前記複数種のカテゴリーのうちの１つ以上のカテゴリーに分類されているカテゴリー情報を記憶し、
前記演算命令実行部は、
選択候補演算命令を実行して演算値を算出し、更に、選択候補演算命令を実行する度に、実行した選択候補演算命令と前記実行した選択候補演算命令の演算値とが示される選択候補情報を生成し、実行した選択候補演算命令が分類されているカテゴリーに対応付けて選択候補情報を出力し、
前記情報処理装置は、更に、
前記演算命令実行部により出力された選択候補情報をカテゴリーに対応付けて記憶する選択候補情報記憶部を備え、
前記演算命令選択部は、
前記選択タイミングにおいて、
前記選択候補情報記憶部によりカテゴリーに対応付けられて記憶されている選択候補情報のうち、選択対象カテゴリーに対応付けられ、前記演算命令実行部により最後に出力された選択候補情報に示される選択候補演算命令を選択し、
前記情報処理装置は、更に、
前記演算命令選択部により選択された選択候補演算命令が示される選択候補情報に示される演算値を抽出し、前記選択対象カテゴリーに対応する判別基準を用いて、抽出した演算値の状態を判別する状態判別部を備えることを特徴とする請求項１又は２記載の情報処理装置。
【請求項６】
前記情報処理装置は、更に、
前記状態判別部により判別された演算値の状態を参照し、参照した演算値の状態が予め設定された状態に合致するか否かを判定する演算値判定部を備えることを特徴とする請求項４又は５記載の情報処理装置。
【請求項７】
コンピュータが、実行順序が指定されている複数の演算命令を実行する演算命令実行ステップと、
前記演算命令実行ステップが前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記コンピュータが、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択ステップと、
前記複数の演算命令のうち前記演算命令選択ステップによる選択候補となる１つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種のカテゴリーのうちの１つ以上のカテゴリーに分類するカテゴリー情報を前記コンピュータが所定の記憶領域から読み出す読み出しステップとを備え、
前記演算命令選択ステップでは、
前記コンピュータが、前記選択タイミングにおいて、
前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知される情報を受信し、
選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行ステップによって実行が完了した選択候補演算命令を選択することを特徴とする情報処理方法。
【請求項８】
実行順序が指定されている複数の演算命令を実行する演算命令実行ステップと、
前記演算命令実行ステップが前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択ステップと、
前記複数の演算命令のうち前記演算命令選択ステップによる選択候補となる１つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種のカテゴリーのうちの１つ以上のカテゴリーに分類するカテゴリー情報を所定の記憶領域から読み出す読み出しステップとをコンピュータに実行させるとともに、
前記演算命令選択ステップでは、
前記コンピュータに、前記選択タイミングにおいて、
前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知される情報を受信させ、
選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行ステップによって実行が完了した選択候補演算命令を選択させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、命令セットのシミュレーションを実行する情報処理装置および情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来、命令セットを予め解析し、解析結果に基づいて選定された演算命令以外は、演算値の状態を示すフラグ（以下、演算値の状態を示すフラグを「演算フラグ」と称する）のフラグ値変更処理を行わないことで命令セットのシミュレーション高速化を行う方法が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平３−１６８８３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の命令セットシミュレーションの高速化方法は、演算フラグが複数種類設定される場合に、演算フラグ毎にフラグ値変更処理を行う演算命令を選定することが出来ず、複数の演算フラグが設定される命令セットシミュレーションの高速化が出来ないという課題があった。
【０００５】
ここで、命令セットに含まれる演算命令には、複数種の演算フラグのうちの１つ以上の演算フラグが対応付けられている演算命令が含まれる。
つまり、演算フラグが対応付けられている演算命令は、演算フラグに応じて、複数種のカテゴリーのうちのいずれかに分類される。
一方、命令セットシミュレーションでは、特定の演算フラグ（カテゴリー）を選択し、選択した演算フラグ（カテゴリー）の値を参照するタイミング（例えば、条件分岐命令の実行前）が繰り返し発生する。
【０００６】
各演算フラグのフラグ値は演算命令の実行状況によっては選択タイミングまでに数度にわたって更新されていることがあるが、後続の処理（例えば、条件分岐命令処理）に用いられるのは、特定の演算フラグ（カテゴリー）が対応付けられ、かつ、選択タイミングの直前に実行された演算命令によって得られたフラグ値（つまり、最後に更新された特定の演算フラグのフラグ値）のみである。
しかし、従来技術では、フラグ値を変更させる演算命令を演算フラグ（カテゴリー）毎に選定することができない。
【０００７】
そのため、従来技術では、複数のカテゴリーに分類される演算命令が含まれる命令セットシミュレーションにおいて、全演算フラグ（カテゴリー）について、フラグ値を変更させる演算命令を実行順序に従って実行し、演算命令の実行の度にフラグ値を記録し、記録したフラグ値の中から選択タイミングの直前に更新されたフラグ値を選択する。
このため、従来技術では、事前に全ての演算命令を実行しなければならず、命令セットシミュレーションの高速化が困難である。
【０００８】
この発明は前記のような課題を解決することを主な目的とするもので、例えば、複数のカテゴリーに分類される演算命令が含まれる命令セットシミュレーションの高速化を実現することを主な目的とする。
【課題を解決するための手段】
【０００９】
この発明に係る情報処理装置は、
実行順序が指定されている複数の演算命令を実行する演算命令実行部と、
前記演算命令実行部が前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択部と、
前記複数の演算命令のうち前記演算命令選択部による選択候補となる１つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種のカテゴリーのうちの１つ以上のカテゴリーに分類するカテゴリー情報を記憶するカテゴリー情報記憶部とを備え、
前記演算命令選択部は、
前記選択タイミングにおいて、
前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知され、
選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行部によって実行が完了した選択候補演算命令を選択することを特徴とする。
【発明の効果】
【００１０】
この発明に係る情報処理装置は、選択対象カテゴリーに分類されており、選択タイミングにおいて最後に実行された選択候補演算命令を選択する。すなわち、この発明に係る情報処理装置は、選択タイミングにおいて、条件分岐命令により参照されるフラグ値が設定される選択候補演算命令をカテゴリー（演算フラグ）毎に選択する。
そして、この発明に係る情報処理装置は、選択された選択候補演算命令のカテゴリー（演算フラグ）のうち条件分岐命令により参照されるカテゴリー（演算フラグ）に対してのみフラグ値変更処理を行い、選択されなかった選択候補演算命令に対してはフラグ値変更処理を省略することで命令セットシミュレーションの高速化を実現する。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１を示す図で、命令セットシミュレーション装置の構成の例を示す図。
【図２】実施の形態１を示す図で、ターゲット命令列の例を示す図。
【図３】実施の形態１を示す図で、カテゴリー情報の例を示す図。
【図４】実施の形態１を示す図で、ホスト命令列の例を示す図。
【図５】実施の形態１を示す図で、ターゲット命令変換部の処理の例を示すフローチャート。
【図６】実施の形態１を示す図で、演算フラグ変更命令情報記憶命令生成部の処理の例を示すフローチャート。
【図７】実施の形態１を示す図で、演算フラグ変更命令生成部の処理の例を示すフローチャート。
【図８】実施の形態１を示す図で、演算フラグ変更命令情報の第１の例を示す図。
【図９】実施の形態１を示す図で、演算フラグ変更命令情報の第２の例を示す図。
【図１０】実施の形態２を示す図で、演算フラグ変更命令情報の第３の例を示す図。
【図１１】実施の形態１〜２を示す図で、各実施の形態に示した命令セットシミュレーション装置のハードウェア資源の例を示す図。
【発明を実施するための形態】
【００１２】
実施の形態１．
本実施の形態において説明する命令セットシミュレーション装置は、命令セットのシミュレーション（模擬実行）を行う情報処理装置である。すなわち、命令セットシミュレーション装置は情報処理装置に対応する。
【００１３】
（命令セットシミュレーションの説明）
ここで、命令セットシミュレーションについて説明する。
まず、命令セットとは所定のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）で使用可能な命令の集合のことである。
そして、命令セットシミュレーションとは、所定のＣＰＵの命令セットの命令から成る命令列（プログラム）をシミュレーション装置が実行可能な命令から成るシミュレーションプログラムに変換し、シミュレーション装置がシミュレーションプログラムを用いてシミュレーションすることである。
【００１４】
ここで、シミュレーション装置のＣＰＵを「ホストプロセッサ」と称する。そして、ホストプロセッサにより実行される命令を「ホスト命令」と称し、シミュレーションプログラムを「ホスト命令列」と称する。
また、シミュレーション装置がシミュレーションするシミュレーション対象の所定のＣＰＵを「ターゲットプロセッサ」と称し、ターゲット命令により実行される命令を「ターゲット命令」と称し、ターゲット命令から成るプログラムを「ターゲット命令列」と称する。
【００１５】
そして、ターゲット命令は、例えば後述のようにアセンブリ言語などで記述され、ホスト命令は例えばＣ言語などの高級言語で記述される。
【００１６】
なお、命令セットシミュレーションには、ホストプロセッサとは異種のＣＰＵ（ターゲットプロセッサ）の命令セットをシミュレーションする場合と、ホストプロセッサと同種のＣＰＵ（ターゲットプロセッサ）の命令セットをシミュレーションする場合とが考えられる。
前者の場合も命令セットシミュレーション装置１００は、ターゲット命令からホスト命令を生成（後述で説明）する際にホストプロセッサが実行可能なホスト命令に変換することが可能である。
【００１７】
（命令セットシミュレーション装置の構成）
図１は、命令セットシミュレーション装置の構成の例を示す図である。
ここで、命令セットシミュレーション装置１００を構成する構成要素について説明する。
【００１８】
ターゲット命令列記憶部１０１は、命令セットシミュレーションの対象となるターゲット命令列を記憶する。
ターゲット命令変換部１０２は、ターゲット命令列記憶部１０１に記憶されているターゲット命令列を用いてホスト命令例を生成する。
【００１９】
オペランドデータ演算命令生成部１０５、演算フラグ変更命令情報記憶命令生成部１０６、演算フラグ変更命令生成部１０７、ホスト分岐命令生成部１０８は、ターゲット命令変換部１０２がホスト命令例を生成する際に、ターゲット命令の種類に応じて処理が行われる。詳細は後述する。
【００２０】
ホスト命令列記憶部１０３は、ターゲット命令変換部１０２により生成されたホスト命令例を記憶する。
ここで、ターゲット命令列記憶部１０１とホスト命令列記憶部１０３とはカテゴリー情報記憶部に対応する。
【００２１】
ホスト命令実行部１０４は、ホスト命令実行部１０４に記憶されているホスト命令例を実行する。
ここで、ホスト命令実行部１０４は、演算命令実行部と演算命令選択部と状態判別部と演算値判定部とに対応する。そして、ホスト命令実行部１０４は、ホストプロセッサに対応する。以降ホストプロセッサをホスト命令実行部１０４と称する。
【００２２】
演算フラグ変更命令記憶部１０９は、ホスト命令実行部１０４がホスト命令例を実行した場合に、所定の処理により選択された演算命令を記憶する（詳細は後述する）。
ここで、演算フラグ変更命令記憶部１０９は、選択候補情報記憶部に対応する。
【００２３】
（ターゲット命令列の説明）
図２は、ターゲット命令列の例を示す図である。
ターゲット命令２０２は、例えば図２に示すようにアセンブリ言語で記述される。
そして、ターゲット命令２０２は例えば図２に示すように第１オペランドと第２オペランドとの２つのオペランド２０３が設定されている。ここで、オペランド２０３には、ターゲット命令２０２により使用される定数やアドレス値が示されるが、オペランド２０３の具体例の図示は省略する（以降の説明においても同様）。
【００２４】
ターゲット命令２０２は、アドレス２０４に示される値の小さい順に実行される。すなわち、ターゲット命令２０２は、実行順序が指定されている。
ここで、図２に示すアドレス２０４「Ａ１」が最小の値であるとし、順番に「Ａ２」「Ａ３」と値が大きくなり、「Ａ６」が最大の値であるとする。すなわち、ターゲット命令２０２は、図２のＤ２０１の「ＡＤＤ」が最初に実行され、Ｄ２０６の「ＭＯＶ」が最後に実行されるものとする。
【００２５】
ここで、例えば、図２のＤ２０１に示されるターゲット命令２０２「ＡＤＤ」は、オペランド２０３に示される値を用いて加算が行われる演算命令である。また、Ｄ２０３に示されるターゲット命令２０２「ＤＩＶ」はオペランド２０３に示される値を用いて除算が行われる演算命令であり、Ｄ２０６に示されるターゲット命令２０２「ＭＯＶ」はオペランド２０３に示される値を用いて値の代入（移動）が行われる演算命令である。
また、図２のＤ２０５に示されるターゲット命令２０２「ＢＧＴ」は、所定の演算フラグ（後述）を参照して、分岐処理が行われる条件分岐命令である。
すなわち、ターゲット命令列３０１には、演算命令と条件分岐命令とが含まれる。
【００２６】
（演算フラグとカテゴリー情報の説明）
図３は、カテゴリー情報の例を示す図である。
説明を分かりやすくする為に、図２に示すターゲット命令列３０１に対応させてカテゴリー情報３０２の例を示しているが、アドレス２０４の情報は無くても良いし、同じ内容のターゲット命令２０２（例えば図３のＤ３０１の「ＡＤＤ」とＤ３０２の「ＡＤＤ」）が１つにまとめられていても良い。
【００２７】
カテゴリー情報３０２は、ターゲット命令列記憶部１０１により記憶されている。
カテゴリー情報３０２は、ターゲット命令列３０１のターゲット命令２０２が実行された場合にいずれの演算フラグ２０１が変更もしくは参照されるかを示す情報である。
なお、図３に示される「Ｇ」は、ターゲット命令２０２が実行された場合に演算フラグ２０１が変更されることを示し、図３に示される「Ｃ」は、ターゲット命令２０２が実行された場合に演算フラグ２０１を参照されることを示す。
例えば、図３のＤ３０１（ターゲット命令２０２「ＡＤＤ」）は、演算フラグ２０１「１〜４」が変更されることを示し、Ｄ３０３（ターゲット命令２０２「ＤＩＶ」）は、演算フラグ２０１「４」のみを変更されることを示し、Ｄ３０５（ターゲット命令２０２「ＢＧＴ」）は、演算フラグ２０１「２〜４」が参照されることを示し、Ｄ３０６（ターゲット命令２０２「ＭＯＶ」）は、演算フラグ２０１の変更も参照もされないことを示す。
そして、演算フラグ２０１が参照されるターゲット命令２０２が条件分岐命令であり、その他のターゲット命令２０２が演算命令である。
【００２８】
ここで、演算フラグ２０１とは、プロセッサ・ステータス・ワードとも称され、演算値の状態を所定のフラグ値（例えば「１」と「０」）で示す情報である。具体的な演算フラグ２０１の種類の例としては、演算値がゼロである場合にフラグ値「１」が設定され、演算値がゼロ以外である場合にフラグ値「０」が設定されるゼロフラグ（ＺＦ）や、演算値がオーバーフローした場合にフラグ値「１」が設定され、演算値がオーバーフローしていない場合にフラグ値「０」が設定されるオーバーフローフラグ（ＯＦ）などがある。
図３においては、具体例の図示は省略するが、演算フラグ２０１「１〜４」のそれぞれに、例えば前述のゼロフラグ（ＺＦ）やオーバーフローフラグ（ＯＦ）などが割り当てられている。そして、図３においては、「１〜４」の４つの種類の演算フラグ２０１が示されている。
【００２９】
ターゲットプロセッサがターゲット命令列３０１を実行した場合には、ターゲットプロセッサにおいて演算フラグ２０１として割り当てられたレジスタ（フラグレジスタ、ステータスレジスタ）にフラグ値が設定される。
一方、ホスト命令実行部１０４がホスト命令列を実行した場合には、レジスタの代わりに例えば何らかの変数が演算フラグ２０１として設定される。そして、演算フラグ２０１の判別基準と同等の演算によりフラグ値が算出され、設定された変数にフラグ値が設定される。このフラグ値が算出され、算出されたフラグ値が変数に設定される処理をフラグ値変更処理と称する。そして、ターゲットプロセッサにおいてレジスタにフラグ値が設定される状態が、設定された変数の状態を観測することによりシミュレーションされる。
以降の説明においては、ターゲットプロセッサがターゲット命令列３０１を実行した場合もホスト命令実行部１０４がホスト命令列を実行した場合も、特に区別せず、フラグ値が設定される対象を演算フラグ２０１と称する。
【００３０】
（ホスト命令列の生成処理の概要説明）
図４は、ホスト命令列の例を示す図である。
図５は、ターゲット命令変換部の処理の例を示すフローチャートである。
【００３１】
まず、図４と図５とを用いて、ターゲット命令変換部１０２が、ターゲット命令列３０１からホスト命令列３０３を生成する処理の概要を説明する。
【００３２】
図４に示すホスト命令列３０３は、図２に示すターゲット命令列３０１を用いてターゲット命令変換部１０２が生成したものである。
例えば、図４のＤ４０１とＤ４０２とのホスト命令が図２のＤ２０１のターゲット命令２０２「ＡＤＤ」に対応した命令である。そして、図４のＤ４０３とＤ４０４とのホスト命令が図２にＤ２０２のターゲット命令２０２「ＡＤＤ」に対応した命令である。以下同様であり説明を省略する。なお、図４に示される個々の命令内容の詳細は後述する。
【００３３】
まず、ターゲット命令変換部１０２はターゲット命令列記憶部１０１に記憶されているターゲット命令２０２とオペランド２０３の情報とを指定された実行順序の通りに入力する（図５のＳ５０１）。
そして、入力したターゲット命令２０２が演算命令か否かを判定する（図５のＳ５０２）。ここで、ターゲット命令列記憶部１０１は、各ターゲット命令２０２が演算命令であるのか条件判定命令であるのかを示す情報を記憶している。そして、ターゲット命令変換部１０２は、ターゲット命令列記憶部１０１に記憶されている情報を参照し、ターゲット命令２０２が演算命令であるのか条件判定命令であるのかを判定可能である。
【００３４】
判定の結果、演算命令である場合（図５のＳ５０２の「ＹＥＳ」）、ターゲット命令変換部１０２は、判定されたターゲット命令２０２とオペランド２０３の情報とをオペランドデータ演算命令生成部１０５と演算フラグ変更命令情報記憶命令生成部１０６とに転送する。
一方、判定の結果、条件分岐命令である場合（図５のＳ５０２の「ＮＯ」）、ターゲット命令変換部１０２は、判定されたターゲット命令２０２とオペランド２０３の情報とを演算フラグ変更命令生成部１０７とホスト分岐命令生成部１０８とに転送する。
【００３５】
オペランドデータ演算命令生成部１０５は、転送されたターゲット命令２０２とオペランド２０３の情報とを用いて、同じ内容の処理をホスト命令実行部１０４に行わせるホスト命令を例えばＣ言語などで生成する。
ここで、転送されたターゲット命令２０２は演算命令であり、オペランドデータ演算命令生成部１０５は、オペランド２０３のデータを用いて演算を行う処理をホスト命令実行部１０４に行わせるホスト命令であるオペランドデータ演算命令を生成する（図５のＳ５０３）。具体的なプログラムの記述は省略するが、例えば図４に示すＤ４０１がオペランドデータ演算命令である。
なお、生成されたホスト命令（オペランドデータ演算命令）も転送されたターゲット命令２０２も同じ処理を行う演算命令であり、以降特に区別の必要無い場合は、オペランドデータ演算命令と、演算命令であるターゲット命令２０２とのいずれも演算命令と称する。
【００３６】
そして、演算フラグ変更命令情報記憶命令生成部１０６は、転送された演算命令を用いて演算フラグ変更命令情報を演算フラグ変更命令記憶部１０９に記憶させる処理をホスト命令実行部１０４に行わせるホスト命令である演算フラグ変更命令情報記憶命令（詳細は後述）を生成する（図５のＳ５０４）。例えば図４に示すＤ４０２が演算フラグ変更命令情報記憶命令である。ここで、演算フラグ変更命令情報記憶命令は、転送された演算命令を用いてオペランドデータ演算命令生成部１０５が生成した演算命令に対応付けられている。
また、演算フラグ変更命令情報は、選択候補情報に対応する。
【００３７】
一方、演算フラグ変更命令生成部１０７は、転送されたターゲット命令２０２を用いて演算フラグ２０１を変更する処理をホスト命令実行部１０４に行わせるホスト命令である演算フラグ変更命令（詳細は後述）を生成する（図５のＳ５０５）。例えば図４に示すＤ４０９が演算フラグ変更命令である。
【００３８】
そして、ホスト分岐命令生成部１０８は、転送されたターゲット命令２０２（条件分岐命令）とオペランド２０３の情報とを用いて、同じ内容の処理をホスト命令実行部１０４に行わせるホスト命令であるホスト分岐命令を生成する（図５のＳ５０６）。例えば図４に示すＤ４１０がホスト分岐命令である。
なお、生成されたホスト命令（ホスト分岐命令）も転送されたターゲット命令２０２も同じ処理を行う条件分岐命令であり、以降特に区別の必要無い場合は、ホスト分岐命令と、条件分岐命令であるターゲット命令２０２とのいずれも条件分岐命令と称する。
【００３９】
ターゲット命令変換部１０２は、全てのターゲット命令２０２をターゲット命令列記憶部１０１から入力したか否かを判定する（図５のＳ５０７）。そして、ターゲット命令変換部１０２は全てのターゲット命令２０２を入力していない場合（図５のＳ５０７の「ＮＯ」）、図５のＳ５０１の処理を再度行い、全てのターゲット命令２０２を入力した場合（図５のＳ５０７の「ＹＥＳ」）、処理を終了し、例えば図４に示すようなホスト命令列３０３を生成する。
そして、ホスト命令列記憶部１０３は生成されたホスト命令列３０３を記憶する。
【００４０】
（ホスト命令列の生成処理の具体例説明）
図６は、演算フラグ変更命令情報記憶命令生成部の処理の例を示すフローチャートである。
図７は、演算フラグ変更命令生成部の処理の例を示すフローチャートである。
次に図２〜図７を用いてホスト命令列３０３の生成処理の具体例を説明する。
【００４１】
まず、ターゲット命令変換部１０２は図２に示すＤ２０１のターゲット命令２０２「ＡＤＤ」とオペランド２０３の情報とを入力する（図５のＳ５０１）。
そして、ターゲット命令変換部１０２は、入力されたターゲット命令２０２が演算命令であると判定し（図５のＳ５０２の「ＹＥＳ」）、オペランドデータ演算命令生成部１０５と演算フラグ変更命令情報記憶命令生成部１０６とに、ターゲット命令２０２「ＡＤＤ」とオペランド２０３の情報とを転送する。
【００４２】
オペランドデータ演算命令生成部１０５は、転送されたターゲット命令２０２「ＡＤＤ」とオペランド２０３の情報とを用いて、加算の演算をホスト命令実行部１０４に行わせる演算命令を生成する（図５のＳ５０３、図４のＤ４０１）。
【００４３】
そして、演算フラグ変更命令情報記憶命令生成部１０６は、図５のＳ５０３に示す演算フラグ変更命令情報記憶命令の生成処理において、詳細には図６に示す処理を行う。
【００４４】
まず、演算フラグ変更命令情報記憶命令生成部１０６は、フラグ番号Ｎを初期化する（図６のＳ６０１）。
そして、演算フラグ変更命令情報記憶命令生成部１０６は、ターゲット命令列記憶部１０１に記憶されたカテゴリー情報３０２（図３）を読み出し（参照し）、転送されたターゲット命令２０２「ＡＤＤ」が実行された時に、設定されたフラグ番号Ｎが変更されるか否かを判定する（図６のＳ６０２）。ここで、初回はＮ＝１であるので、演算フラグ変更命令情報記憶命令生成部１０６は、カテゴリー情報３０２を読み出し、ターゲット命令２０２「ＡＤＤ」が実行された時に、演算フラグ２０１「１」が変更されるか否かを判定する。
【００４５】
ターゲット命令２０２「ＡＤＤ」が実行された時に、演算フラグ２０１「１」が変更されるので（図６のＳ６０２の「ＹＥＳ」）、演算フラグ変更命令情報記憶命令生成部１０６は、演算フラグ変更命令情報記憶命令を生成する（図６のＳ６０３）。ここで、演算フラグ変更命令情報記憶命令は、ターゲット命令２０２「ＡＤＤ」が実行された場合に演算フラグ２０１「１」が変更されることを示す演算フラグ変更命令情報を演算フラグ変更命令記憶部１０９に記憶させる処理をホスト命令実行部１０４に行わせる命令である。
【００４６】
一方、例えば、ターゲット命令２０２が図３のＤ３０３に示す「ＤＩＶ」であった場合は、演算フラグ変更命令情報記憶命令生成部１０６はカテゴリー情報３０２を読み出し、演算フラグ２０１「１」が変更されないと判定する（図６のＳ６０２の「ＮＯ」）。そして、演算フラグ変更命令情報記憶命令生成部１０６は演算フラグ変更命令情報記憶命令を生成しない。
【００４７】
そして、演算フラグ変更命令情報記憶命令生成部１０６は、フラグ番号Ｎをインクリメントする（図６のＳ６０４）。
次に、演算フラグ変更命令情報記憶命令生成部１０６は、フラグ番号Ｎが最大値に達したか否かを判定する（図６のＳ６０５）。ここで本例の場合は、演算フラグ２０１が「１〜４」の場合を想定しているので、最大値は「４」となる。
【００４８】
演算フラグ変更命令情報記憶命令生成部１０６は、全ての演算フラグ２０１に対して図６のＳ６０２〜Ｓ６０５の処理を行う。
そして、演算フラグ変更命令情報記憶命令生成部１０６は、ターゲット命令２０２「ＡＤＤ」の場合、演算フラグ２０１「１〜４」が変更されることを示す演算フラグ変更命令情報を演算フラグ変更命令記憶部１０９に記憶させる処理をホスト命令実行部１０４に行わせる演算フラグ変更命令情報記憶命令を生成する（図４のＤ４０２）。
また、演算フラグ変更命令情報記憶命令生成部１０６は、ターゲット命令２０２「ＤＩＶ」の場合、演算フラグ２０１「４」が変更されることを示す演算フラグ変更命令情報を演算フラグ変更命令記憶部１０９に記憶させる処理をホスト命令実行部１０４に行わせる演算フラグ変更命令情報記憶命令を生成する。
【００４９】
一方、ターゲット命令変換部１０２が図２に示すＤ２０１のターゲット命令２０２「ＢＧＴ」とオペランド２０３の情報とを入力した場合を説明する。
この場合、ターゲット命令変換部１０２は、入力されたターゲット命令２０２が演算命令でないと判定し（図５のＳ５０２の「ＮＯ」）、演算フラグ変更命令生成部１０７とホスト分岐命令生成部１０８とに、ターゲット命令２０２「ＢＧＴ」とオペランド２０３の情報とを転送する。
【００５０】
そして、演算フラグ変更命令生成部１０７は、図５のＳ５０５に示す演算フラグ変更命令の生成処理において、詳細には図７に示す処理を行う。
【００５１】
まず、演算フラグ変更命令生成部１０７は、フラグ番号Ｎを初期化する（図７のＳ７０１）。
そして、演算フラグ変更命令生成部１０７は、ターゲット命令列記憶部１０１に記憶されたカテゴリー情報３０２（図３）を参照し、転送されたターゲット命令２０２「ＢＧＴ」が実行された時に、設定されたフラグ番号Ｎが参照されるか否かを判定する（図７のＳ７０２）。ここで、初回はＮ＝１であるので、演算フラグ変更命令情報記憶命令生成部１０６は、カテゴリー情報３０２を読み出し、ターゲット命令２０２「ＢＧＴ」が実行された時に、演算フラグ２０１「１」が参照されるか否かを判定する。
【００５２】
ターゲット命令２０２「ＢＧＴ」が実行された時に、演算フラグ２０１「１」が参照されないので（図７のＳ７０２の「ＮＯ」）、演算フラグ変更命令生成部１０７は、フラグ番号Ｎをインクリメントする（図７のＳ７０４）。
次に、演算フラグ変更命令生成部１０７は、フラグ番号Ｎが最大値に達したか否かを判定する（図７のＳ７０５）。ここで本例の場合は、演算フラグ２０１が「１〜４」の場合を想定しているので、最大値は「４」となる。
【００５３】
フラグ番号Ｎは「２」が設定されることとなるので（図７のＳ７０５の「ＮＯ」）、演算フラグ変更命令生成部１０７は、カテゴリー情報３０２を読み出し、ターゲット命令２０２「ＢＧＴ」が実行された時に、設定された演算フラグ２０１「２」が参照されるか否かを判定する（図７のＳ７０２）。
【００５４】
演算フラグ変更命令生成部１０７は、ターゲット命令２０２「ＢＧＴ」が実行された時に、演算フラグ２０１「２」が参照されると判定し（図７のＳ７０２の「ＹＥＳ」）、演算フラグ変更命令を生成する（図７のＳ７０３）。ここで、演算フラグ変更命令は、ターゲット命令２０２「ＢＧＴ」が実行された場合に演算フラグ２０１「２」が参照されることがホスト命令実行部１０４に通知され、ホスト命令実行部１０４に通知された演算フラグ２０１の変更処理を行わせる命令である。
【００５５】
演算フラグ変更命令生成部１０７は、全ての演算フラグ２０１に対して図７のＳ７０２〜Ｓ７０５の処理を行う。そして、演算フラグ変更命令生成部１０７は、ターゲット命令２０２「ＢＧＴ」の場合、演算フラグ２０１「２〜４」が参照されることがホスト命令実行部１０４に通知され、ホスト命令実行部１０４に通知された演算フラグ２０１の変更処理を行わせる演算フラグ変更命令を生成する（図４のＤ４０９）。
【００５６】
そして、ホスト分岐命令生成部１０８は、転送されたターゲット命令２０２「ＢＧＴ」とオペランド２０３の情報とを用いて、条件分岐の処理をホスト命令実行部１０４に行わせる条件分岐命令を生成する（図５のＳ５０６、図４のＤ４１０）。
【００５７】
（カテゴリー情報とホスト命令列との説明）
ホスト命令列３０３は、前述で説明の処理によって生成され、図２に示されるターゲット命令列３０１と図３に示されるカテゴリー情報３０２とが形式を変えて示されたものである。すなわち、ホスト命令列３０３はカテゴリー情報３０２に対応する。
【００５８】
図３のカテゴリー情報３０２および図４のホスト命令（カテゴリー情報）には、複数の演算命令のうち１つ以上の演算命令が選択候補演算命令として定義されている。ここで、選択候補演算命令とは、演算フラグが対応付けられた演算命令のことである。つまり、この選択候補演算命令とは、演算命令が実行されると対応付けられた演算フラグ２０１のフラグ値が演算値の状態と演算値の判別基準とに応じて変更される演算命令のことである。そして、選択候補演算命令とは、後述で説明の処理において、ホスト命令実行部１０４による選択候補となる演算命令のことである。
すなわち、図３のＤ３０１に示す「ＡＤＤ」や、Ｄ３０３に示す「ＤＩＶ」が選択候補演算命令である。ここで、図３のＤ３０６に示す「ＭＯＶ」は演算フラグ２０１が変更されないので選択候補演算命令ではない。
図４のホスト命令（カテゴリー情報）においても、いずれかの演算フラグ２０１が変更される場合に生成される演算フラグ変更命令情報記憶命令が対応付けられている演算命令が選択候補演算命令である（例えば図４のＤ４０１やＤ４０５）。ここで、演算フラグ変更命令情報記憶命令が対応付けられている演算命令とは、当該演算命令が実施された後に演算フラグ変更命令情報記憶命令が実施される演算命令のことを示す。
【００５９】
更に、図３のカテゴリー情報３０２および図４のホスト命令（カテゴリー情報）では、各選択候補演算命令が、複数種の演算フラグ２０１のうちの１つ以上の演算フラグ２０１に対応付けられている。
つまり、演算フラグ２０１が対応付けられている選択候補演算命令は、演算フラグに応じて、複数種のカテゴリーのうちのいずれかに分類される。すなわち、複数種のカテゴリーは、複数種の判別基準（演算値の状態を判別するために用いられる判別基準）に対応させて定義されている。
そして、いずれの判別基準が用いられて各選択候補演算命令の演算値の状態が判別されるかにより、各選択候補演算命令は、複数種のカテゴリーのうちの１つ以上のカテゴリーに分類されている。
換言すると、演算フラグ２０１は、いずれの判別基準によって演算値の状態が判別されるかというカテゴリーに対応するものである。
【００６０】
例えば、選択候補演算命令「ＡＤＤ」の演算値の状態が、例えば「演算値がゼロであるか否か」という判別基準が用いられて判別される場合を想定する。そして、「演算値がゼロであるか否か」という判別基準が用いられて演算値の状態が判別されるのはゼロフラグという演算フラグ２０１である。
すなわち、選択候補演算命令「ＡＤＤ」は、ゼロフラグという演算フラグ２０１の判別基準が用いられて演算値の状態が判別されるというカテゴリーに分類される。そして、選択候補演算命令「ＡＤＤ」が実行されると、演算値の状態に応じてゼロフラグという演算フラグ２０１が変更されることになる。
【００６１】
以降の説明においては、例えば、選択候補演算命令「ＡＤＤ」が、演算フラグ２０１「１」の判別基準が用いられて演算値の状態が判別されるというカテゴリーに分類されていることを「選択候補演算命令「ＡＤＤ」は、演算フラグ２０１「１」に対応付けられている」と称する。そして、選択候補演算命令「ＡＤＤ」が実行されると対応付けられている演算フラグ２０１「１」が変更されることとなる。
そして、同様に「選択候補演算命令が分類されているカテゴリー」を以降「選択候補演算命令が対応付けられている演算フラグ」と称し、「カテゴリー」を以降「演算フラグ」と称する。
【００６２】
図３のカテゴリー情報３０２の例においては、上述の説明と同様に、選択候補演算命令「ＡＤＤ」は、演算フラグ２０１「１」に対応付けられている。そして、選択候補演算命令「ＡＤＤ」が実行されると、演算値の状態が判別された結果、対応付けられている演算フラグ２０１「１」のフラグ値が変更されることとなる。演算フラグ２０１「２〜４」についても同様である為、説明を省略する。
そして、図４のホスト命令（カテゴリー情報）の例においても同様に、Ｄ４０１の選択候補演算命令は、対応付けられた演算フラグ変更命令情報記憶命令によって演算フラグ２０１「１〜４」が対応付けられている。
【００６３】
また、図３のカテゴリー情報３０２および図４のホスト命令列３０３（カテゴリー情報）に示される通り、選択候補演算命令「ＡＤＤ」は演算フラグ２０１「１〜４」に対応付けられているが、選択候補演算命令「ＤＩＶ」は演算フラグ２０１「４」にのみ対応付けられている。
すなわち、ホスト命令実行部１０４は、対応付けられた演算フラグ２０１（分類されたカテゴリー）のうちの少なくとも１つが相互に異なる２つ以上の選択候補演算命令を、複数の演算命令の少なくとも一部として実行する。
【００６４】
（ホスト命令実行部１０４の演算命令実行処理の説明）
ホスト命令実行部１０４は、ホスト命令列記憶部１０３に記憶されているホスト命令列３０３（カテゴリー情報）を読み出して実行する。このホスト命令列３０３には、実行順序が指定されている複数の演算命令が含まれている。
【００６５】
ホスト命令実行部１０４は、まず、図４のＤ４０１に示す演算命令を実行する。ここで、図４のＤ４０１に示す演算命令は選択候補演算命令であり、ホスト命令実行部１０４は、選択候補演算命令を実行して演算値を算出する。
【００６６】
次に、ホスト命令実行部１０４は、図４のＤ４０２に示す演算フラグ変更命令情報記憶命令を実行する。
前述および図４に示す通り、演算フラグ変更命令情報記憶命令は、選択候補演算命令に対応付けられているので、ホスト命令実行部１０４は、選択候補演算命令を実行する度に、演算フラグ変更命令情報記憶命令を実行する。
【００６７】
そして、ホスト命令実行部１０４は、実行した選択候補演算命令が示される演算フラグ変更命令情報を生成する。ここで、図４のＤ４０１に示す演算命令を実行した場合に、ホスト命令実行部１０４は、図４のＤ４０１に示す演算命令が示される演算フラグ変更命令情報を生成する。または、ホスト命令実行部１０４は、図４のＤ４０１に示す演算命令に対応する図２のＤ２０１のターゲット命令２０２とオペランド２０３とが示される演算フラグ変更命令情報を生成する。あるいは、ホスト命令実行部１０４は、図４のＤ４０１に示す演算命令と図４のＤ４０１に示す演算命令に対応する図２のＤ２０１のターゲット命令２０２とオペランド２０３とが示される演算フラグ変更命令情報を生成しても良い。
【００６８】
更に、ホスト命令実行部１０４は、実行した選択候補演算命令が対応付けられている演算フラグ（分類されているカテゴリー）に対応付けて演算フラグ変更命令情報を出力する。
具体的には、ホスト命令実行部１０４は、図４のＤ４０１に示す演算命令が対応付けられている演算フラグ２０１「１〜４」のそれぞれに対応付けて演算フラグ変更命令情報３０４ａ〜３０４ｄを出力する。すなわち、演算フラグ変更命令情報３０４ａ〜３０４ｄは、演算フラグ変更命令情報に示される演算命令が実行された場合に、演算フラグ２０１「１〜４」が変更されることを示す。
【００６９】
そして、演算フラグ変更命令記憶部１０９は、ホスト命令実行部１０４により出力された演算フラグ変更命令情報３０４ａ〜３０４ｄを演算フラグ（カテゴリー）に対応付けて記憶する。
【００７０】
図８は、演算フラグ変更命令情報の第１の例を示す図である。
図８の例は、ホスト命令実行部１０４により、ターゲット命令２０２とオペランド２０３とが示される演算フラグ変更命令情報３０４ａ〜ｄが生成された場合を示している。演算フラグ変更命令情報３０４ａ〜ｄのそれぞれが一つの演算フラグ変更命令情報３０４を示す。
演算フラグ変更命令記憶部１０９は、演算フラグ２０１毎に、演算フラグ変更命令情報３０４に示されるターゲット命令２０２とオペランド２０３とを記憶する。
図８の例は、演算フラグ２０１「１〜４」がアドレス２０４「Ａ１」のターゲット命令２０２「ＡＤＤ」によって変更されることが示されている。なお、図８の例においては、説明を分かりやすくする為に、アドレス２０４「Ａ１」を示しているが、アドレス２０４の情報は特に必要ない為、実際には、無くても良い（以下の説明においても同様である）。
ホスト命令実行部１０４により、ホスト命令列３０３の演算命令が示される演算フラグ変更命令情報３０４が生成された場合は、演算フラグ変更命令記憶部１０９は、演算フラグ２０１毎に、演算フラグ変更命令情報３０４に示されるホスト命令列３０３の演算命令を記憶する。
【００７１】
そして、次に、ホスト命令実行部１０４は、図４のＤ４０３に示す演算命令を実行し、図４のＤ４０４に示す演算フラグ変更命令情報記憶命令を実行する。
そして、図示は省略するが、ホスト命令実行部１０４は、アドレス２０４「Ａ２」のターゲット命令２０２「ＡＤＤ」が示される演算フラグ変更命令情報３０４ａ〜ｄを生成する。そして、演算フラグ変更命令記憶部１０９は、新たに演算フラグ変更命令情報３０４ａ〜ｄを、図８に示される演算フラグ変更命令情報３０４ａ〜ｄと置き換えて記憶する（上書きして記憶する）。
【００７２】
そして、途中の説明を省略するが、ホスト命令実行部１０４は、更に、ホスト命令列３０３の実行を進め、図４のＤ４０８に示す演算フラグ変更命令情報記憶命令を実行する場合を説明する。この場合、ホスト命令実行部１０４は、演算フラグ２０１「４」が変更されることを示す演算フラグ変更命令情報３０４ｄを生成する。そして、ホスト命令実行部１０４は、演算フラグ２０１「４」に対応付けられた演算フラグ変更命令情報３０４ｄのみを出力する。
そして、演算フラグ変更命令記憶部１０９は、今まで記憶されていた演算フラグ２０１「４」に対応する演算フラグ変更命令情報３０４ｄのみを、アドレス２０４「Ａ４」のターゲット命令２０２「ＤＩＶ」が示される演算フラグ変更命令情報３０４ｄに置き換えて記憶する（上書きして記憶する）。
【００７３】
図９は、演算フラグ変更命令情報の第２の例を示す図である。
図９の例は、ホスト命令実行部１０４が図４のＤ４０８に示す演算フラグ変更命令情報記憶命令を実行した場合の演算フラグ変更命令記憶部１０９が記憶する演算フラグ変更命令情報３０４を示す。
【００７４】
図９の例は、演算フラグ２０１「１〜３」がアドレス２０４「Ａ２」のターゲット命令２０２「ＡＤＤ」が実行されることにより変更されることが示されており、演算フラグ２０１「４」がアドレス２０４「Ａ４」のターゲット命令２０２「ＤＩＶ」が実行されることにより変更されることが示されている。
換言すると、アドレス２０４「Ａ２」のターゲット命令２０２「ＡＤＤ」は演算フラグ２０１「１〜３」に対応付けられており、アドレス２０４「Ａ４」のターゲット命令２０２「ＤＩＶ」は演算フラグ２０１「４」に対応付けられている。
すなわち、演算フラグ変更命令記憶部１０９は、演算フラグ２０１毎に、ホスト命令実行部１０４により最後に出力された演算フラグ変更命令情報３０４を記憶する。
【００７５】
そして、図９の例は、演算フラグ２０１「１〜３」のフラグ値は、最終的にアドレス２０４「Ａ２」のターゲット命令２０２「ＡＤＤ」が実行されることにより変更され、演算フラグ２０１「４」のフラグ値は、最終的にアドレス２０４「Ａ４」のターゲット命令２０２「ＤＩＶ」が実行されることにより変更されることを示している。
すなわち、図９の例は、演算フラグ２０１のフラグ値をシミュレーションする場合、アドレス２０４「Ａ２」のターゲット命令２０２「ＡＤＤ」とアドレス２０４「Ａ４」のターゲット命令２０２「ＤＩＶ」との演算のみを行えば良いことを示している。換言すると、図９の例は、アドレス２０４「Ａ１」のターゲット命令２０２「ＡＤＤ」とアドレス２０４「Ａ３」のターゲット命令２０２「ＤＩＶ」とは、演算フラグ２０１のフラグ値をシミュレーションする必要がないことを示している。
【００７６】
なお、演算フラグ変更命令記憶部１０９は、前述のように新たな演算フラグ変更命令情報３０４を置き換えて記憶（上書きして記憶）しても良いし、最後に出力された演算フラグ変更命令情報３０４が区別可能であれば、例えばログリストのような形式を用い新たな演算フラグ変更命令情報３０４を追加して記憶しても良い。
【００７７】
（ホスト命令実行部１０４の条件分岐命令実行処理の説明）
そして、ホスト命令実行部１０４は、図４のＤ４０９に示す演算フラグ変更命令を実行する。
ここで、ホスト命令実行部１０４は、複数の演算命令の中から所定の演算命令を選択する。このホスト命令実行部１０４が複数の演算命令の中から所定の演算命令を選択するタイミングは、このホスト命令実行部１０４が複数の演算命令の実行を開始した後に到来する。そして、このタイミングを選択タイミングと称する。
換言すると、選択タイミングは、条件分岐命令が実行される直前のタイミングでもある。
【００７８】
ホスト命令実行部１０４は、この選択タイミングにおいて、演算フラグ変更命令に示された選択対象カテゴリーが演算フラグ変更命令（図４のＤ４０９）によって通知される。ここで、選択対象カテゴリーとは、命令セットに含まれる条件分岐命令が実行され判定が行われる際に選択される特定のカテゴリー（特定の演算フラグ）のことである。条件分岐命令が実行されると、選択タイミングにおいて特定の演算フラグ（特定のカテゴリー）が選択され、そのフラグ値が参照され、判定が行われる。換言すると、選択対象カテゴリーとは、複数種の演算フラグ２０１（カテゴリー）のうち、演算命令の選択の対象となる演算フラグ２０１（カテゴリー）のことである。
具体的には、ホスト命令実行部１０４は、演算フラグ変更命令（図４のＤ４０９）の後に条件分岐命令（図４のＤ４１０）を実行する場合に参照される演算フラグ２０１（カテゴリー）が通知される。図４の例においては、ホスト命令実行部１０４には、選択対象カテゴリーとして演算フラグ２０１「２〜４」の情報が通知される。
【００７９】
そして、ホスト命令実行部１０４は、この選択タイミングにおいて、演算フラグ変更命令記憶部１０９により演算フラグ２０１（カテゴリー）に対応付けて記憶されている演算フラグ変更命令情報３０４のうち、選択対象となる演算フラグ２０１「２〜４」（選択対象カテゴリー）に対応付けられた演算フラグ変更命令情報３０４に示される選択候補演算命令を選択する。
換言すると、ホスト命令実行部１０４は、選択候補演算命令のうち、選択対象となる演算フラグ２０１に対応付けられており（選択対象カテゴリーに分類されており）、選択タイミングの前に最後にホスト命令実行部１０４によって実行が完了した選択候補演算命令を選択する。
【００８０】
具体的には、ホスト命令実行部１０４は、演算フラグ２０１「２」に対応付けられた演算フラグ変更命令情報３０４に示される選択候補演算命令として「Ａ２  ＡＤＤ」（図９  ３０４ｂ）を選択する。同様にホスト命令実行部１０４は、演算フラグ２０１「３」に対応付けられた選択候補演算命令として「Ａ２  ＡＤＤ」（図９  ３０４ｃ）、演算フラグ２０１「４」に対応付けられた選択候補演算命令として「Ａ４  ＤＩＶ」（図９  ３０４ｄ）を選択する。
【００８１】
そして、ホスト命令実行部１０４は、選択した選択候補演算命令を実行して演算値を算出する。
ここで、図９に示すように演算フラグ変更命令情報３０４としてターゲット命令２０２とオペランド２０３とが示される場合は、ホスト命令実行部１０４は、演算フラグ変更命令情報３０４をターゲット命令変換部１０２に転送し、ターゲット命令変換部１０２が生成したホスト命令を実行することで演算値を算出する。
また、図示は省略するが、演算フラグ変更命令情報３０４としてホスト命令が示される場合は、ホスト命令実行部１０４は、演算フラグ変更命令情報３０４に示されるホスト命令を実行することで演算値を算出する。
【００８２】
更に、ホスト命令実行部１０４は、選択対象となる演算フラグ２０１（選択対象カテゴリー）に対応する判別基準を用いて、算出した演算値の状態を判別する。
例えば、演算フラグ２０１「１」がゼロフラグで有った場合、ホスト命令実行部１０４は、選択対象となる演算フラグ２０１（選択対象カテゴリー）に対応する「演算値がゼロであるか否か」という判別基準を用いて算出した演算値の状態を判別し、判別結果に基づきフラグ値を設定する。
【００８３】
そして、ホスト命令実行部１０４は、図４のＤ４１０に示す条件分岐命令を実行する。
ここで、ホスト命令実行部１０４は、判別された演算値の状態を参照し、参照した演算値の状態が予め設定された状態に合致するか否かを判定する。すなわち、ホスト命令実行部１０４は、判別結果に基づき設定されたフラグ値を参照し、参照したフラグ値が予め設定された値に合致するか否かを判定する。
具体的には、ホスト命令実行部１０４は、演算フラグ２０１「２〜４」に設定されたフラグ値を参照し、参照したフラグ値が予め設定された値（例えば、全てのフラグ値が「１」）であるか否かを判定する。
そして、ホスト命令実行部１０４は、参照したフラグ値が予め設定された値（例えば、全てのフラグ値が「１」）であれば、例えば真である場合の分岐として設定された分岐処理を行い、参照したフラグ値が予め設定された値（例えば、全てのフラグ値が「１」）でなければ、例えば偽である場合の分岐として設定された分岐処理を行う。
【００８４】
（実施の形態１の効果）
以上のように、実施の形態１の命令セットシミュレーション装置１００は、演算フラグ２０１を計算するために必要となる演算命令を複数の演算フラグ２０１毎に記憶している。そのため、複数の演算フラグ２０１が設定され演算命令の種別によっては一部の演算フラグ２０１のみを変更する命令セットをシミュレーションする場合に、実施の形態１の命令セットシミュレーション装置１００は、演算フラグ２０１毎に変更する演算命令を正しく選定することができる。
そして、実施の形態１の命令セットシミュレーション装置１００は、演算フラグ２０１を参照する命令が必要とする演算フラグ２０１のみの変更処理を実行する。更に実施の形態１の命令セットシミュレーション装置１００は、演算フラグ２０１を変更しても後の演算値により更に変更されてしまう演算フラグ２０１の変更処理を省略する。そのため、実施の形態１の命令セットシミュレーション装置１００は、無駄な演算処理を省略し命令セットシミュレーションを高速化することができる。
【００８５】
以上、実施の形態１においては、以下の特徴を備えた命令セットシミュレーション装置１００について説明した。
（１）命令セットシミュレーション装置１００は、ターゲットプロセッサのターゲット命令列３０１をホストプロセッサのホスト命令列３０３へ変換してホストプロセッサにより実行する。この時、ターゲットプロセッサには演算フラグ２０１が複数存在し、演算フラグ２０１を変更するターゲット命令２０２が全フラグを変更するのではなく一部フラグのみを変更する場合が想定される。
命令セットシミュレーション装置１００は、演算フラグ変更命令の変換時に、演算フラグ２０１を変更するターゲット命令２０２、演算されるオペランド２０３などの演算フラグ変更命令情報３０４を演算フラグ２０１毎に記憶する命令（演算フラグ変更命令情報記憶命令）を生成する。そして、命令セットシミュレーション装置１００は、演算フラグ２０１に基づく条件判定を行う命令の変換時に、演算フラグ２０１を変更する命令（演算フラグ変更命令）を生成する。
以上により、命令セットシミュレーション装置１００は、命令セットシミュレーション性能を高速化する。
（２）命令セットシミュレーション装置１００は、演算フラグ変更処理において、条件判定に使用されるフラグのみを計算し、条件判定に使用されないフラグの計算を省略する。
（３）命令セットシミュレーション装置１００は、ターゲット命令２０２を変換する時点で、演算命令を行うホスト命令に加えて演算フラグ変更命令情報記憶命令を行うホスト命令列を生成する。また、命令セットシミュレーション装置１００は、ターゲット命令２０２を変換する時点で、条件分岐命令を行うホスト命令に加えて演算フラグ変更命令を行うホスト命令を生成する。
（４）命令セットシミュレーション装置１００は、演算フラグ変更命令情報記憶命令を行うホスト命令を生成する際に、演算フラグ毎に複数の演算フラグ変更命令情報を記憶するのではなく、必要な演算フラグ変更命令情報のみ（場合によっては、単一の演算フラグ変更命令情報のみ）を記憶する命令を生成する。
以上により、命令セットシミュレーション装置１００は、演算フラグ変更命令情報記憶処理を単純化し高速化する。
【００８６】
実施の形態２．
（実施の形態２における命令セットシミュレーション装置の概要）
実施の形態１における命令セットシミュレーション装置１００では、ホスト命令実行部１０４が演算フラグ変更命令記憶部１０９に記憶された演算フラグ変更命令情報３０４に示される選択候補演算命令を実行し演算値を算出している。
実施の形態２における命令セットシミュレーション装置１００では、ホスト命令実行部１０４が演算フラグ変更命令記憶部１０９に記憶された演算フラグ変更命令情報３０４に演算値が対応付けられて記憶されている実施形態を説明する。
【００８７】
なお、実施の形態２の命令セットシミュレーション装置１００は、図１に示す実施の形態１の命令セットシミュレーション装置１００と同じ構成である。従って、実施の形態１と同じ構成要素と同じ処理内容とについては説明を省略する。
【００８８】
図１０は、演算フラグ変更命令情報の第３の例を示す図である。
実施の形態１に示される演算フラグ変更命令情報３０４（例えば図９）と比べ、演算値２０５が示されている点が異なる。なお、演算値２０５の具体的な図示は省略する（以後の説明においても同様）。
【００８９】
（ホスト命令列の生成処理の説明）
ターゲット命令変換部１０２がターゲット命令列３０１からホスト命令列３０３を生成する際に実施の形態１と異なる部分のみ説明を行う。
【００９０】
演算フラグ変更命令情報記憶命令生成部１０６は、実施の形態１と同様に図６のＳ６０３において演算フラグ変更命令情報記憶命令を生成する。ここで、演算フラグ変更命令情報記憶命令には、ホスト命令実行部１０４が直前の演算命令を実行して、算出した演算値２０５を演算フラグ変更命令情報３０４に加える処理が追加される。
【００９１】
そして、演算フラグ変更命令生成部１０７は、実施の形態１と同様に図７のＳ７０３において演算フラグ変更命令を生成する。ここで、演算フラグ変更命令には、ホスト命令実行部１０４が演算フラグ変更命令情報３０４に示される選択候補演算命令を選択する際に、演算フラグ変更命令情報３０４に示される演算値２０５を抽出させる処理が追加される。
【００９２】
（ホスト命令実行部１０４の処理の説明）
ホスト命令実行部１０４がホスト命令列３０３を実行する際に、実施の形態１と異なる部分のみ説明を行う。
【００９３】
ホスト命令実行部１０４は、実施の形態１と同様に演算フラグ変更命令情報記憶命令（例えば図４のＤ４０２）を実行する。この時、ホスト命令実行部１０４は、実行した選択候補演算命令と実行した選択候補演算命令の演算値２０５とが示される選択候補情報を生成する。そして、ホスト命令実行部１０４は、実行した選択候補演算命令が対応付けられている演算フラグ（分類されているカテゴリー）に対応付けて選択候補情報を出力する。
そして、図１０に示すように演算フラグ変更命令情報３０４に演算値２０５が含まれる。
【００９４】
そして、ホスト命令実行部１０４は、実施の形態１と同様に演算フラグ変更命令（図４のＤ４０９）を実行し、選択候補演算命令を選択する。この時、ホスト命令実行部１０４は、選択した選択候補演算命令が示される選択候補情報に示される演算値２０５を抽出する。更に、ホスト命令実行部１０４は、選択対象の演算フラグ２０１（選択対象カテゴリー）に対応する判別基準を用いて、抽出した演算値２０５の状態を判別する。
【００９５】
（実施の形態２の効果）
以上のように、実施の形態２の命令セットシミュレーション装置１００の演算フラグ変更命令記憶部１０９は、演算値２０５を記憶する。そのため、実施の形態２の命令セットシミュレーション装置１００は、演算フラグ変更処理時に演算を再度実行して演算値を算出する必要がない。すなわち、実施の形態２の命令セットシミュレーション装置１００は、記憶しておいた演算値２０５を用いることで演算処理を省略し、命令セットシミュレーションを高速化することができる。
【００９６】
以上、実施の形態２においては、演算フラグ変更命令情報記憶処理では、演算命令とオペランド情報と共に、その演算値２０５を記憶することにより、演算フラグ変更処理を簡素化し高速化することを特徴とする命令セットシミュレーション装置１００について説明した。
【００９７】
（実施の形態１〜２の命令セットシミュレーション装置１００のハードウェア構成）
最後に、実施の形態１〜２に示した命令セットシミュレーション装置１００のハードウェア構成例について説明する。
図１１は、各実施の形態に示した命令セットシミュレーション装置１００のハードウェア資源の一例を示す図である。
なお、図１１の構成は、あくまでも命令セットシミュレーション装置１００のハードウェア構成の一例を示すものであり、命令セットシミュレーション装置１００のハードウェア構成は図１１に記載の構成に限らず、他の構成であってもよい。
【００９８】
図１１において、命令セットシミュレーション装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。各実施の形態ではこのＣＰＵ９１１をホストプロセッサと称している。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
各実施の形態で説明したターゲット命令列記憶部１０１、ホスト命令列記憶部１０３、演算フラグ変更命令記憶部１０９は、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１などは、出力装置の一例である。
【００９９】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【０１００】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【０１０１】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
命令セットシミュレーション装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【０１０２】
上記プログラム群９２３には、各実施の形態の説明において「〜部」（「〜記憶部」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【０１０３】
ファイル群９２４には、各実施の形態の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の照合」、「〜の参照」、「〜の検索」、「〜の抽出」、「〜の検査」、「〜の生成」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の受信」、「〜の判定」、「〜の定義」、「〜の算出」、「〜の更新」、「〜の登録」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶されている。
「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・生成・取得・通知・指示・判断・区別・削除・登録・付与などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・生成・取得・通知・指示・判断・区別・削除・登録・付与などのＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、各実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１０４】
また、各実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、各実施の形態で説明したフローチャートに示すステップ、手順、処理により、本発明に係る情報処理方法を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、各実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、各実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【０１０５】
このように、各実施の形態に示す命令セットシミュレーション装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１０６】
１００  命令セットシミュレーション装置、１０１  ターゲット命令列記憶部、１０２  ターゲット命令変換部、１０３  ホスト命令列記憶部、１０４  ホスト命令実行部、１０５  オペランドデータ演算命令生成部、１０６  演算フラグ変更命令情報記憶命令生成部、１０７  演算フラグ変更命令生成部、１０８  ホスト分岐命令生成部、１０９  演算フラグ変更命令記憶部、２０１  演算フラグ、２０２  ターゲット命令、２０３  オペランド、２０４  アドレス、２０５  演算値、３０１  ターゲット命令列、３０２  カテゴリー情報、３０３  ホスト命令列、３０４  演算フラグ変更命令情報、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  コンパクトディスク装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2013120419.tif 000003
【図２】
2013120419.tif 000004
【図３】
2013120419.tif 000005
【図４】
2013120419.tif 000006
【図５】
2013120419.tif 000007
【図６】
2013120419.tif 000008
【図７】
2013120419.tif 000009
【図８】
2013120419.tif 000010
【図９】
2013120419.tif 000011
【図１０】
2013120419.tif 000012
【図１１】
2013120419.tif 000013