(57)【特許請求の範囲】
【請求項１】
変換前オブジェクトプログラムを用いて生成された第１の実行形式プログラムを実行して、条件付き分岐命令の分岐成立状況に関する分岐トレース情報を取得するとともに、分岐すると予測しているときに分岐しなかった場合の第１の分岐ペナルティ、分岐すると予測しているときに分岐した場合の第２の分岐ペナルティ、分岐しないと予測しているときに分岐しなかった場合の第３の分岐ペナルティ、および分岐しないと予測しているときに分岐した場合の第４の分岐ペナルティを規定した分岐ペナルティテーブルを取得する分岐トレース情報取得手段と、
前記分岐トレース情報取得手段により取得した分岐トレース情報および分岐ペナルティテーブルを参照して、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第１の分岐ペナルティおよび前記第２の分岐ペナルティと、に基づいて、分岐が成立すると予測する場合の第１の合計ペナルティを算出するとともに、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第３の分岐ペナルティおよび前記第４の分岐ペナルティと、に基づいて、分岐が成立しないと予測する場合の第２の合計ペナルティを算出し、前記第１の合計ペナルティと前記第２の合計ペナルティとの差分に応じて、前記変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを、分岐成立または分岐不成立に書き換え、書き換えた変換後オブジェクトプログラムを生成するバイナリプログラム変換手段と、
前記バイナリプログラム変換手段により変換された変換後オブジェクトプログラムを用いて第２の実行形式プログラムを生成する実行形式プログラム生成手段と、
を備えることを特徴とするプログラム変換装置。
【請求項２】
前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合する分岐トレースマージ手段、
をさらに備えることを特徴とする請求項１に記載のプログラム変換装置。
【請求項３】
条件付き分岐命令の分岐成立状況に関する分岐トレース情報と、分岐すると予測しているときに分岐しなかった場合の第１の分岐ペナルティ、分岐すると予測しているときに分岐した場合の第２の分岐ペナルティ、分岐しないと予測しているときに分岐しなかった場合の第３の分岐ペナルティ、および分岐しないと予測しているときに分岐した場合の第４の分岐ペナルティを規定した分岐ペナルティテーブルと、を参照して、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第１の分岐ペナルティおよび前記第２の分岐ペナルティと、に基づいて、分岐が成立すると予測する場合の第１の合計ペナルティを算出するとともに、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第３の分岐ペナルティおよび前記第４の分岐ペナルティと、に基づいて、分岐が成立しないと予測する場合の第２の合計ペナルティを算出し、前記第１の合計ペナルティと前記第２の合計ペナルティとの差分に応じて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを、分岐成立または分岐不成立に書き換え、書き換えた変換後オブジェクトプログラムを生成して、記憶装置に記憶する第１のステップと、
前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成して、前記記憶装置に記憶する第２のステップと、
を含むことを特徴とするプログラム変換方法。
【請求項４】
前記第１のステップにおいて、前記分岐トレース情報として、前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合した情報を用いることを特徴とする請求項３に記載のプログラム変換方法。
【請求項５】
前記第１のステップにおいて、前記分岐トレース情報として、前記変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクしてシミュレータ用実行形式プログラムを生成し、該シミュレータ用実行形式プログラムをシミュレータで実行することにより生成される情報を用いることを特徴とする請求項３または４に記載のプログラム変換方法。
【請求項６】
前記第１のステップにおいて、前記シミュレータ用実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同シミュレータ用実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスにより特定される条件付き分岐命令の成立予測ビットを書き換えることを特徴とする請求項５に記載のプログラム変換方法。
【請求項７】
条件付き分岐命令の分岐成立状況に関する分岐トレース情報と、分岐すると予測しているときに分岐しなかった場合の第１の分岐ペナルティ、分岐すると予測しているときに分岐した場合の第２の分岐ペナルティ、分岐しないと予測しているときに分岐しなかった場合の第３の分岐ペナルティ、および分岐しないと予測しているときに分岐した場合の第４の分岐ペナルティを規定した分岐ペナルティテーブルと、を参照して、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第１の分岐ペナルティおよび前記第２の分岐ペナルティと、に基づいて、分岐が成立すると予測する場合の第１の合計ペナルティを算出するとともに、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第３の分岐ペナルティおよび前記第４の分岐ペナルティと、に基づいて、分岐が成立しないと予測する場合の第２の合計ペナルティを算出し、前記第１の合計ペナルティと前記第２の合計ペナルティとの差分に応じて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを、分岐成立または分岐不成立に書き換え、書き換えた変換後オブジェクトプログラムを生成して、記憶装置に記憶する第１のステップと、
前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成して、前記記憶装置に記憶する第２のステップと、
をコンピュータに実行させることを特徴とするプログラム変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、静的分岐予測付きの条件付き分岐命令を含むバイナリプログラムの成立予測ビットを書き換えるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムに関する。
【背景技術】
【０００２】
近時、パイプライン処理を行う計算機には、パイプライン処理の流れ作業の処理順を乱さないようにするために、条件付き分岐命令（Ｃｏｎｄｉｔｉｏｎａｌ  Ｂｒａｎｃｈ）の成立または不成立を予測する分岐予測機能が実装されている。この機能を有する計算機は、成立が予測された分岐命令を実行するとき、分岐条件が成立したと仮定して後続の命令群をプリフェッチする。予測がはずれた場合には、プリフェッチしていた命令群を破棄して、分岐条件が成立しなかった場合の命令群をプリフェッチし直すため、余分な時間、すなわち分岐ペナルティが発生する。
【０００３】
分岐予測機能の一つに、ソフトウェアから明示的に分岐方向を指定する静的分岐予測機能がある。この静的分岐予測機能に関する提案として、バイナリプログラムを、分岐予測手段を備えた計算機で実行されるバイナリプログラムに変換するバイナリプログラム変換装置が公知である。
【０００４】
図２０は、従来のバイナリプログラム変換装置の構成を示す図である。図２０に示すように、このバイナリプログラム変換装置は、バイナリプログラム変換ツール４とトレーサ２からなる。トレーサ２は、複数の命令ブロックからなる変換前バイナリプログラム１を予め実行し、その際に収集した実行情報に基づいてトレース情報３を生成する。トレース情報３は、変換前バイナリプログラム１の実行時に採取された動作履歴（トレース情報）をバイナリプログラム単位や命令ブロック単位に集計した結果である。
【０００５】
また、命令ブロックは、分岐命令やジャンプ命令やコール命令等の制御転送命令ごとに区切られたバイナリプログラムの部分や、その先頭が分岐命令の分岐先となるラベルとなるようにプログラムの領域を区切ることで定義されるブロックである。バイナリプログラム変換ツール４は、そのトレース情報３を受けて、変換前のバイナリプログラム１から変換後のバイナリプログラム５を生成する。
【０００６】
その際、バイナリプログラム変換ツール４は、計算機が上位方向（または下位方向）の番地への分岐命令に対して分岐の実行確率を低く予測する特性を有する場合に、分岐の発生頻度の低い分岐命令については上位方向（または下位方向）の番地への分岐命令となり、分岐の発生頻度の高い分岐命令については、下位方向（または上位方向）の番地への分岐命令となるように、複数の命令ブロックの配置を変更する。また、バイナリプログラム変換ツール４は、分岐の発生頻度の高い分岐命令については、その分岐前の命令ブロックに対応する部分と分岐後の命令ブロックに対応する部分とが連続するように、複数の命令ブロックの配置を変更する（例えば、特許文献１参照。）。
【０００７】
【特許文献１】特開２００１−２７３１３８号公報（段落［００１１］〜［００２０］、［００３８］）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、前記特許文献１に開示された従来の技術では、次のような問題点がある。第１に、命令列が他の命令列に置き換えられたり、命令ブロックが移動させられるため、命令コード長が増減し、コードサイズが拡大することがある。そのため、容量サイズの制限が厳しい組み込みシステムには不適当である。第２に、組み込みシステムの場合、トレース情報は、シミュレータにより取得される。通常、そのシミュレータで実行される実行形式プログラムと、組み込みシステムが実際に搭載される装置（以下、実機とする）で実行される実行形式プログラムが異なるため、シミュレータにより取得したトレース情報をそのまま用いて、実機用の実行形式プログラムを加工することができない。
【０００９】
第３に、同一の分岐命令の実行経路が複数ある場合について考慮されていないため、分岐予測に対応したプログラムを作成または加工する際に、いずれの実行経路から得られるトレース情報を用いればよいのか、ということが不明である。第４に、分岐命令において分岐するか否かの判断基準が、トレース情報を取得する際のプログラム実行時に分岐が成立した回数にのみ基づいており、分岐ペナルティを反映した判断基準となっていない。そのため、分岐予測の的中率は良くても、分岐ペナルティが十分に削減されない場合がある。
【００１０】
この発明は、上述した従来技術による問題点を解消するため、組み込みシステムで実行されるバイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えるのに適したプログラム変換装置、プログラム変換方法およびプログラム変換プログラムを提供することを目的とする。また、複数の実行経路で実行され得る分岐命令の分岐予測が複数の実行経路を考慮して平均的な確率で行われるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムを提供することを目的とする。さらに、分岐ペナルティが削減されるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、本発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムは、以下の特徴を有する。分岐トレース情報取得手段、バイナリプログラム変換手段および実行形式プログラム生成手段を備える。分岐トレース情報取得手段により、変換前オブジェクトプログラムを用いて生成された第１の実行形式プログラムを実行して、条件付き分岐命令の分岐成立状況に関する分岐トレース情報を取得する。バイナリプログラム変換手段により、分岐トレース情報と、分岐予測が外れたときの分岐ペナルティに基づいて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成する。実行形式プログラム生成手段により、変換後オブジェクトプログラムを用いて第２の実行形式プログラムを生成する。
【００１２】
条件付き分岐命令の実行経路が複数ある場合には、分岐トレースマージ手段により、その複数の実行経路のそれぞれから得られる分岐トレース情報を結合して、バイナリプログラム変換手段で用いられる分岐トレース情報とする。分岐トレース情報では、第１の実行形式プログラムにおける条件付き分岐命令の物理アドレスが得られる。従って、バイナリプログラム変換手段は、この物理アドレスと、第１の実行形式プログラムにおける変換前オブジェクトプログラムのオフセットアドレスの差分から、変換前オブジェクトプログラムにおける条件付き分岐命令の相対アドレスを求め、この相対アドレスで特定される命令を、変換前オブジェクトプログラムにおける成立予測ビットの書き換え対象とする。
【００１３】
前記第２の実行形式プログラムが、例えば、組み込みシステムの実機に搭載されるプログラムである場合には、前記第１の実行形式プログラムは、シミュレータで実行されるプログラムとなる。つまり、第１の実行形式プログラムは、変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクして生成されるシミュレータ用実行形式プログラムである。そして、このシミュレータ用実行形式プログラムをシミュレータで実行することにより、分岐トレース情報が得られる。この分岐トレース情報に基づいて、変換前オブジェクトプログラムの成立予測ビットを書き換えることによって、変換後オブジェクトプログラムが得られる。第２の実行形式プログラムは、実機用実行形式プログラムであり、変換後オブジェクトプログラムと実機用オブジェクトプログラムをリンクして生成される。
【００１４】
この発明によれば、オブジェクトプログラムにおける条件付き分岐命令の成立予測ビットを書き換えるだけなので、コードサイズを拡大させずに済む。また、実機でのプログラムの実行形式がシミュレータでの実行形式と異なる場合でも、シミュレータから得られる分岐トレース情報に基づいて、条件付き分岐命令の成立予測ビットを書き換えた実機用実行形式プログラムが得られる。従って、容量サイズの制限が厳しい組み込みシステムにも適用できる。また、条件付き分岐命令の実行経路が複数ある場合でも、その複数の実行経路での条件付き分岐命令の分岐成立状況が反映される。また、条件付き分岐命令の分岐成立状況だけでなく、分岐ペナルティも反映される。
【発明の効果】
【００１５】
本発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムによれば、組み込みシステムで実行されるバイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。また、複数の実行経路で実行され得る分岐命令の分岐予測が複数の実行経路を考慮して平均的な確率で行われるように、あるいは、分岐ペナルティが削減されるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に添付図面を参照して、この発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムの好適な実施の形態を詳細に説明する。ここでは、主として、条件付き分岐命令の分岐成立状況に関する分岐トレース情報をシミュレータで取得する場合について説明する。
【００１７】
（プログラム変換装置のハードウェア構成）
まず、この発明の実施の形態にかかるプログラム変換装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかるプログラム変換装置のハードウェア構成を示すブロック図である。
【００１８】
図１において、プログラム変換装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部は、バス１００によってそれぞれ接続されている。
【００１９】
ここで、ＣＰＵ１０１は、プログラム変換装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御に従ってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００２０】
ＦＤＤ１０６は、ＣＰＵ１０１の制御に従ってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータをプログラム変換装置に読み取らせたりする。
【００２１】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２２】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００２３】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２４】
スキャナ１１２は、画像を光学的に読み取り、プログラム変換装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【００２５】
（プログラム変換装置の機能的構成）
次に、この発明の実施の形態にかかるプログラム変換装置の機能的構成について説明する。図２は、この発明の実施の形態にかかるプログラム変換装置の機能的構成を示す図である。図２に示すように、プログラム変換装置は、バイナリプログラム変換ツール１１、分岐トレースマージツール１２、リンカ１３，１４およびシミュレータ１５を備えている。リンカ１３は、変換前オブジェクトプログラム２１とシミュレータ用オブジェクトプログラム２２をリンクして、シミュレータ用実行形式プログラム２３を生成する。
【００２６】
シミュレータ１５は、分岐トレース情報取得手段としての機能を有し、シミュレータ用実行形式プログラム２３を実行して分岐トレース情報を生成する。シミュレータ用実行形式プログラム２３に条件付き分岐命令の実行経路が複数ある場合には、シミュレータ１５は、第１の実行経路、第２の実行経路および第ｍの実行経路のそれぞれに対して第１の分岐トレース情報２４、第２の分岐トレース情報２５および第ｍの分岐トレース情報２６を出力する。ここで、ｍは２以上の整数である。分岐トレースマージツール１２は、これら第１の分岐トレース情報２４、第２の分岐トレース情報２５および第ｍの分岐トレース情報２６を結合（マージ）して、最終的な分岐トレース情報２７を生成する。
【００２７】
バイナリプログラム変換ツール１１は、シミュレータ用実行形式プログラム２３、分岐トレース情報２７および分岐ペナルティテーブル２８に基づいて、変換前オブジェクトプログラム２１の条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラム２９を生成する。バイナリプログラム変換ツール１１の詳細な構成については、後述する（Ａ）。リンカ１４は、実行形式プログラム生成手段としての機能を有し、変換後オブジェクトプログラム２９と実機用オブジェクトプログラム３０をリンクして、組み込みシステムを搭載する実機で実行される実機用実行形式プログラム３１を生成する。
【００２８】
なお、上述したバイナリプログラム変換ツール１１、分岐トレースマージツール１２、リンカ１３，１４およびシミュレータ１５は、具体的には、例えば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、またはＩ／Ｆ１０９によって、その機能を実現する。
【００２９】
（プログラム変換処理手順）
次に、この発明の実施の形態にかかるプログラム変換装置の処理手順について説明する。図３は、この発明の実施の形態にかかるプログラム変換装置の処理手順を示す図である。図３に示すように、プログラム変換処理が開始されると、まず、リンカ１３により、変換前オブジェクトプログラム２１とシミュレータ用オブジェクトプログラム２２をリンクして、シミュレータ用実行形式プログラム２３を作成する（ステップＳ３０１）。
【００３０】
次いで、シミュレータ１５により、シミュレータ用実行形式プログラム２３を実行して、分岐トレース情報２７を取得する（ステップＳ３０２）。上述したように、条件付き分岐命令の実行経路が複数ある場合には、分岐トレース情報２７は、分岐トレースマージツール１２により、実行経路ごとに得られる分岐トレース情報２４，２５，２６を結合したものとなる。分岐トレースマージツール１２による分岐トレース情報の結合処理の詳細については、後述する（Ｄ）。
【００３１】
次いで、バイナリプログラム変換ツール１１により、分岐トレース情報２７と分岐ペナルティテーブル２８に基づいて、変換前オブジェクトプログラム２１の条件付き分岐命令の成立予測ビットを書き換え、変換後オブジェクトプログラム２９を作成する（ステップＳ３０３）。バイナリプログラム変換ツール１１による成立予測ビットの書き換え処理の詳細については、後述する（Ｃ）。次いで、リンカ１４により、変換後オブジェクトプログラム２９と実機用オブジェクトプログラム３０をリンクして、実機用実行形式プログラム３１を作成する（ステップＳ３０４）。このようにして、条件付き分岐命令の成立予測ビットが書き換えられた実機用実行形式プログラム３１が得られる。
【００３２】
（Ａ．バイナリプログラム変換ツールの構成）
図４は、バイナリプログラム変換ツールの構成を示す図である。図４に示すように、バイナリプログラム変換ツール１１は、算出処理部４１、判定処理部４２、入力部４３、位置処理部４４、書き換え処理部４５、出力部４６および統計情報出力部４７を備えている。算出処理部４１は、分岐トレース情報２７と分岐ペナルティテーブル２８に基づいて、条件付き分岐命令ごとに総分岐ペナルティの差分を算出する。総分岐ペナルティの差分は、成立予測ビットの書き換えが必要であるか否かの判定を行う際の指標として用いられる。
【００３３】
判定処理部４２は、条件付き分岐命令ごとに、総分岐ペナルティの差分に基づいて、成立予測ビットを書き換えるか否かを判定する。入力部４３は、変換前オブジェクトプログラム２１の入力を受け付ける。位置処理部４４は、シミュレータ用実行形式プログラム２３および分岐トレース情報２７に基づいて、条件付き分岐命令ごとに、変換前オブジェクトプログラム２１における当該条件付き分岐命令のアドレスを特定する。位置処理部４４によるアドレス特定処理については、後述する（Ｂ）。
【００３４】
書き換え処理部４５は、判定処理部４２により成立予測ビットの書き換えが必要であると判定された条件付き分岐命令の成立予測ビットを書き換える。その書き換えの対象は、変換前オブジェクトプログラム２１の、位置処理部４４により特定されたアドレスにある条件付き分岐命令である。出力部４６は、成立予測ビットの書き換えが済んだ変換後オブジェクトプログラム２９を出力する。統計情報出力部４７は、成立予測ビットが書き換えられた箇所の統計情報３２を出力する。
【００３５】
図５に、条件付き分岐命令の成立予測ビットが２ビットである例を示す。この例では、成立予測ビットの値は、分岐すると予測する場合には２進数で１０（１０進数で２）または１１（１０進数で３）に設定され、分岐しないと予測する場合には２進数で００（１０進数で０）または０１（１０進数で１）に設定される。そして、コンパイラまたはアセンブラにより機械語に展開される。
【００３６】
図６に、変換前オブジェクトプログラム２１の一例を示す。図６において、＃の直後の数字（０または３）は、成立予測ビットを１０進数で表した値である。従って、１行目のアドレス０ｘ００２０００２０の後に＃３とあるのは、成立予測ビットの値が２進数で１１であり、分岐すると予測されていることを表している。
【００３７】
図７に、分岐トレース情報２７の一例を示す。図７においては、シミュレータ１５での実行時に、図６に示す変換前オブジェクトプログラム２１のアドレス０ｘ００２０００２０の条件付き分岐命令について、４回分岐が成立し、１２回分岐が成立しなかったことを表している。
【００３８】
図８に、分岐ペナルティテーブル２８の一例を示す。図８に示す例では、分岐すると予測しているとき（フラグ：Ｔ）に、分岐しなかった場合には分岐ペナルティとして３が発生し、分岐した場合には分岐ペナルティとして１が発生する。また、分岐しないと予測しているとき（フラグ：Ｆ）に、分岐した場合には分岐ペナルティとして３が発生し、分岐しなかった場合にはペナルティが発生しない。それぞれの分岐ペナルティの値は、プロセッサに依存する。ここで、フラグは、成立予測ビットの値が２進数で１０または１１である場合にＴとし、２進数で００または０１である場合にＦとする。
【００３９】
図９に、変換後オブジェクトプログラム２９の一例を示す。図９に示す例では、図６に示す変換前オブジェクトプログラム２１のアドレス０ｘ００２０００２０、０ｘ００２０００４８および０ｘ００２０００６８の各成立予測ビット（図９に四角で囲む部分）が書き換えられている。
【００４０】
図１０に、統計情報３２の一例を示す。図１０には、統計情報３２として、適用対象オブジェクトプログラムａ．ｏｂｊに条件付き分岐命令が１２３個あり、そのうちの９８個で成立予測ビットが書き換えられており、その書き換えの適用率が７９．６７％であるという情報が得られたことが示されている。図１０において、左端のアップデート欄に「Ｕ」とあるのは、成立予測ビットが書き換えられたことを表している。
【００４１】
（Ｂ．アドレス特定処理の説明）
図１１は、位置処理部によるアドレス特定処理を説明する図である。図１１に示すように、シミュレータ１５でシミュレータ用実行形式プログラム（ａ．ａｂｓ）２３を実行することにより分岐トレース情報２７が得られる。ここで、アドレス０ｘ００２０００３０の関数名ｆｕｎｃＳ１（分岐トレース情報２７に☆印で示す）の分岐命令について、変換前オブジェクトプログラム（ａ．ｏｂｊ）２１におけるアドレスを特定する場合を例にして説明する。
【００４２】
分岐トレース情報２７として取得したアドレス（αとする）は、シミュレータ空間での論理アドレスであり（シミュレータ用実行形式プログラム２３に☆印で示す）、オブジェクトプログラムにおける分岐命令のアドレスには対応していない。そこで、この分岐命令に対応するオブジェクトプログラムと、コードセクション内の先頭からの相対アドレス、すなわちオフセットアドレス（βとする）を求める。一般に、実行形式プログラムには、オブジェクトプログラム名とそのコードセクション内の先頭からの相対アドレスが格納されている。例えば、最も標準的な実行形式プログラムの規格であるＥＬＦ（Ｅｘｅｃｕｔａｂｌｅ  ａｎｄ  Ｌｉｎｋｉｎｇ  Ｆｏｒｍａｔ）では、これらの情報は、シンボルテーブルに格納されている。なお、これは実行形式プログラムの規格によらない。
【００４３】
そして、これらのアドレスαとβから、変換前オブジェクトプログラム２１における分岐命令のアドレス（γとする）を求める（変換前オブジェクトプログラム２１に☆印で示す）。γは、次の（１）式で求められる。位置処理部４４は、変換前オブジェクトプログラム２１内のこのγのアドレスにある命令が分岐命令であることを確認する。分岐命令でない場合には、位置処理部４４は、エラーを発生する。
γ＝α−β  ・・・（１）
【００４４】
（Ｃ．成立予測ビットの書き換え処理手順）
図１２は、成立予測ビットの書き換え処理手順の説明に用いられる分岐ペナルティテーブルを示す図である。図１２に示すように、分岐すると予測しているとき（フラグ：Ｔ）に、分岐しなかった場合の分岐ペナルティをＰ（Ｔ：ｎ）とし、分岐した場合の分岐ペナルティをＰ（Ｔ：ｔ）とする。また、分岐しないと予測しているとき（フラグ：Ｆ）に、分岐しなかった場合の分岐ペナルティをＰ（Ｆ：ｎ）とし、分岐した場合の分岐ペナルティをＰ（Ｆ：ｔ）とする。
【００４５】
図１３は、成立予測ビットの書き換え処理手順の説明に用いられる分岐トレース情報を示す図である。図１３に示すように、取得した分岐トレース情報２７の分岐番号をｋ（ｋは１からｎまでの自然数）とし、この分岐番号ｋを用いて分岐命令をＰｋと表し、分岐命令Ｐｋの分岐成立回数および分岐不成立回数を、それぞれ、Ｐｋ（ｔ）およびＰｋ（ｎ）とする。
【００４６】
図１４は、成立予測ビットの書き換え処理手順を示す図である。図１４に示すように、成立予測ビットの書き換え処理が開始されると、まず、算出処理部４１により、分岐ペナルティテーブル２８に基づいて、分岐が成立すると予測する場合の合計ペナルティＰ（Ｔ）と、分岐が成立しないと予測する場合の合計ペナルティＰ（Ｆ）を算出する（ステップＳ１４０１）。Ｐ（Ｔ）およびＰ（Ｆ）は、それぞれ、次の（２）式および（３）式で求められる。
Ｐ（Ｔ）＝Ｐ（Ｔ：ｎ）×Ｐｋ（ｎ）＋Ｐ（Ｔ：ｔ）×Ｐｋ（ｔ）  ・・・（２）
Ｐ（Ｆ）＝Ｐ（Ｆ：ｎ）×Ｐｋ（ｎ）＋Ｐ（Ｆ：ｔ）×Ｐｋ（ｔ）  ・・・（３）
【００４７】
次いで、分岐番号ｋを１とし（ステップＳ１４０２）、算出処理部４１により、分岐命令Ｐｋでの分岐成立回数Ｐｋ（ｔ）および分岐不成立回数Ｐｋ（ｎ）に基づいて、総分岐ペナルティの差分（δＰｋ）を算出する（ステップＳ１４０３）。δＰｋは、次の（４）式で求められる。
δＰｋ＝Ｐ（Ｆ）−Ｐ（Ｔ）  ・・・（４）
【００４８】
次いで、判定処理部４２により、δＰｋが０以上であるか否かを判定する（ステップＳ１４０４）。δＰｋが０以上である場合（ステップＳ１４０４：Ｙｅｓ）、分岐命令Ｐｋの成立予測ビットを分岐成立（フラグ：Ｔ）に設定する（ステップＳ１４０５）。一方、δＰｋが０よりも小さい場合（ステップＳ１４０４：Ｎｏ）、分岐命令Ｐｋの成立予測ビットを分岐不成立（フラグ：Ｆ）に設定する（ステップＳ１４０６）。
【００４９】
次いで、書き換え処理部４５により、ステップＳ１４０５またはステップＳ１４０６で設定された成立予測ビットと、分岐命令Ｐｋの元の成立予測ビットとが一致するか否かを判定する（ステップＳ１４０７）。一致しない場合（ステップＳ１４０７：Ｎｏ）、変換前オブジェクトプログラム２１の分岐命令Ｐｋの成立予測ビットを、ステップＳ１４０５またはステップＳ１４０６で設定された成立予測ビットに書き換える（ステップＳ１４０８）。一致する場合（ステップＳ１４０７：Ｙｅｓ）、成立予測ビットの書き換えは行われない。
【００５０】
次いで、分岐番号ｋをインクリメントし（ステップＳ１４０９）、ｋの値が［ｎ＋１］に達したか否かを判定する（ステップＳ１４１０）。ｋが［ｎ＋１］に達するまで（ステップＳ１４１０：Ｎｏ）、前記ステップＳ１４０３からステップＳ１４１０までを繰り返す。ｋが［ｎ＋１］に達したら（ステップＳ１４１０：Ｙｅｓ）、出力部４６により変換後オブジェクトプログラム２９を出力するとともに、統計情報出力部４７により統計情報３２を出力し（ステップＳ１４１１）、成立予測ビットの書き換え処理を終了する。
【００５１】
（Ｄ．分岐トレース情報の結合処理手順）
図１５は、分岐トレース情報の結合処理手順を示す図である。図１５に示すように、分岐トレース情報の結合処理が開始されると、まず、分岐トレースマージツール１２により、実行経路ごとの分岐トレース情報２４，２５，２６（図２参照）を読み込む（ステップＳ１５０１）。次いで、分岐トレースマージツール１２により、読み込んだ複数の分岐トレース情報をマージする。
【００５２】
具体的には、同一分岐アドレスの分岐成立回数を加算する。分岐不成立回数についても同様に加算する（ステップＳ１５０２）。これにより、複数の実行経路で取得した分岐トレース情報の平均的な分岐の割合を取得することができる。マージする分岐トレース情報が多いほど、各分岐命令での分岐精度が向上する。そして、マージして得られた分岐トレース情報を出力し（ステップＳ１５０３）、分岐トレース情報の結合処理を終了する。
【００５３】
分岐トレース情報を結合する際に、分岐成立回数および分岐不成立回数を単純に加算してもよいが、分岐トレース情報ごとに意味や実行頻度などのプログラム特性に応じた演算式を定義し、重み付けをして加算することもできる。例えば、第１の分岐トレース情報、第２の分岐トレース情報および第ｍの分岐トレース情報の分岐成立回数（または分岐不成立回数）をそれぞれＢＲ１、ＢＲ２およびＢＲｍとし、それぞれの重み付け係数をＣ１、Ｃ２およびＣｍとし、データ個数をｊとすると、重み付け後の分岐トレース情報の分岐成立回数（または分岐不成立回数）Ｃは、次の（５）式で求められる。
Ｃ＝ΣＣｍ×ＢＲｍ  （ｍ＝１、２、…、ｊ）  ・・・（５）
【００５４】
図１６に、第１の分岐トレース情報２４と第２の分岐トレース情報２５を結合した分岐トレース情報２７の一例を示す。通常は、第１の分岐トレース情報２４の重み付け係数Ｃ１と第２の分岐トレース情報２５の重み付け係数Ｃ２は、ともに１であるが、ここでは、Ｃ１が１であり、Ｃ２が２である場合を説明する。これは、適用プログラムにおいて、第２の分岐トレース情報２５の価値が第１の分岐トレース情報２４の価値よりも大きいと定義されるケースに相当する。この場合、マージ後の分岐トレース情報２７の分岐成立回数（または分岐不成立回数）Ｃは、次の（６）式で求められる。
Ｃ＝ＢＲ１＋２×ＢＲ２  ・・・（６）
【００５５】
（分岐トレース情報を実機環境から取得する例）
組み込みシステムを搭載する機器の場合、実機環境で分岐トレース情報を取得することもできる。図１７は、分岐トレース情報を実機環境から取得する装置の機能的構成を示す図である。図１７に示すように、この装置は、ＩＣＥやＪ−ＴＡＧなどのトレース取得専用回路５１および分岐トレース情報加工ソフトウェア５２を備えている。トレース取得専用回路５１および分岐トレース情報加工ソフトウェア５２は、分岐トレース情報取得手段としての機能を有する。
【００５６】
トレース取得専用回路５１は、実機で実機用実行形式プログラム６１を実行しているときに、実機（ハードウェア）から時系列ハードウェアトレース情報６２を取得する。ハードウェアから時系列ハードウェアトレース情報を取得することについては、特開昭５７−１２４０８８号公報または特許第３９０９０８０号公報に開示されている。従って、ここでは、これらの公報に開示されている技術を利用することとして、説明を省略する。分岐トレース情報加工ソフトウェア５２は、時系列ハードウェアトレース情報６２に基づいて、分岐成立回数と分岐不成立回数を取得し、分岐トレース情報６３を作成する。図１８に、時系列ハードウェアトレース情報の一例を示す。
【００５７】
図１９は、分岐トレース情報加工ソフトウェアによる分岐トレース情報の出力処理手順を示す図である。図１９に示すように、分岐トレース情報加工ソフトウェア５２による分岐トレース情報の出力処理が開始されると、まず、トレース取得専用回路５１から出力された時系列ハードウェアトレース情報６２を読み込む（ステップＳ１９０１）。次いで、１要素ごとにトレース情報を読み込む（ステップＳ１９０２）。次いで、分岐元アドレスごとに分岐成立回数と分岐不成立回数を求める（ステップＳ１９０３）。
【００５８】
そして、トレース情報の有無を判定し（ステップＳ１９０４）、読み込んでいないトレース情報が残っている間（ステップＳ１９０４：Ｎｏ）、前記ステップＳ１９０２からステップＳ１９０４を繰り返す。読み込んでいないトレース情報がなくなったら（ステップＳ１９０４：Ｙｅｓ）、全ての分岐アドレスについて、実機用実行形式プログラム６１のシンボルアドレス情報との照合を行い、対応する関数名を取得する（ステップＳ１９０５）。最後に、分岐トレース情報６３を出力して（ステップＳ１９０６）、分岐トレース情報加工ソフトウェアによる処理を終了する。このようにして実機環境から取得した分岐トレース情報６３を用いても、上述したシミュレータ１５により分岐トレース情報２７を取得した場合と同様に、変換前オブジェクトプログラム２１の成立予測ビットを書き換えて、変換後オブジェクトプログラム２９を得ることができる。
【００５９】
以上説明したように、実施の形態によれば、変換前オブジェクトプログラム２１における条件付き分岐命令の成立予測ビットを書き換えるだけなので、コードサイズを拡大させずに済む。また、実機用実行形式プログラム３１の実行形式がシミュレータ用実行形式プログラム２３の実行形式と異なる場合でも、シミュレータ１５から得られる分岐トレース情報２７に基づいて変換前オブジェクトプログラム２１の条件付き分岐命令の成立予測ビットを書き換えるので、条件付き分岐命令の成立予測ビットを書き換えた実機用実行形式プログラム３１が得られる。従って、容量サイズの制限が厳しい組み込みシステムにも適用できるので、組み込みシステムで実行されるバイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。
【００６０】
また、複数の実行経路での条件付き分岐命令の分岐成立状況が反映されるので、複数の実行経路で実行され得る分岐命令の分岐予測が複数の実行経路を考慮して平均的な確率で行われるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。さらに、条件付き分岐命令の分岐成立状況だけでなく、分岐ペナルティも反映されるので、分岐ペナルティが削減されるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。
【００６１】
また、実施の形態によれば、以下のような効果も得られる。条件付き分岐命令の成立予測ビットを書き換えるだけなので、プログラム品質が劣化することがなく、安全である。ソースコードプログラムを加工する代わりに、より単純なバイナリプログラムを加工するので、容易に新機能を活用することができる。プログラム利用者は、開発者の再翻訳作業を待たずに新しいバイナリプログラムを生成して利用することができる。なお、ソースコードの管理が適切に行われていなければ、再翻訳作業が不可能であったり、大きな危険を伴うことになるが、実施の形態では、このような不都合は生じない。
【００６２】
また、オブジェクトプログラムの成立予測ビットのみを書き換えるので、実行形式プログラムの種々の実行形式ごとに分岐トレース情報を取得し直す手間が省ける。また、実機やシミュレータの環境に関係なく、オブジェクトプログラムを加工することができる。また、統計情報が出力されるので、バイナリプログラムの変換結果から逆算してソースコードプログラムに反映させることもできる。ソースコードプログラムに反映させることによって、他プラットフォームへの移植もソースコードレベルで行うことができる。
【００６３】
なお、本実施の形態で説明したプログラム変換プログラムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。
【００６４】
（付記１）変換前オブジェクトプログラムを用いて生成された第１の実行形式プログラムを実行して、条件付き分岐命令の分岐成立状況に関する分岐トレース情報を取得する分岐トレース情報取得手段と、前記分岐トレース情報取得手段により取得した分岐トレース情報に基づいて、前記変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成するバイナリプログラム変換手段と、前記バイナリプログラム変換手段により変換された変換後オブジェクトプログラムを用いて第２の実行形式プログラムを生成する実行形式プログラム生成手段と、を備えることを特徴とするプログラム変換装置。
【００６５】
（付記２）前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合する分岐トレースマージ手段、をさらに備えることを特徴とする付記１に記載のプログラム変換装置。
【００６６】
（付記３）前記第１の実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同第１の実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスで特定される命令を、同変換前オブジェクトプログラムにおける成立予測ビットの書き換え対象とする位置処理手段、をさらに備えることを特徴とする付記１または２に記載のプログラム変換装置。
【００６７】
（付記４）前記バイナリプログラム変換手段は、さらに、分岐予測が外れたときの分岐ペナルティに基づいて、前記変換前オブジェクトプログラムの条件付き分岐命令の成立予測ビットを書き換えることを特徴とする付記１〜３のいずれか一つに記載のプログラム変換装置。
【００６８】
（付記５）条件付き分岐命令の分岐成立状況に関する分岐トレース情報に基づいて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成する第１のステップと、前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成する第２のステップと、を含むことを特徴とするプログラム変換方法。
【００６９】
（付記６）前記第１のステップにおいて、前記分岐トレース情報として、前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合した情報を用いることを特徴とする付記５に記載のプログラム変換方法。
【００７０】
（付記７）前記条件付き分岐命令の複数の実行経路の実行頻度に応じた重み付けを行って、各実行経路に対する分岐トレース情報を結合することを特徴とする付記６に記載のプログラム変換方法。
【００７１】
（付記８）前記第１のステップにおいて、前記分岐トレース情報として、前記変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクしてシミュレータ用実行形式プログラムを生成し、該シミュレータ用実行形式プログラムをシミュレータで実行することにより生成される情報を用いることを特徴とする付記５〜７のいずれか一つに記載のプログラム変換方法。
【００７２】
（付記９）前記第１のステップにおいて、前記シミュレータ用実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同シミュレータ用実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスにより特定される命令が条件付き分岐命令である場合に成立予測ビットを書き換えることを特徴とする付記８に記載のプログラム変換方法。
【００７３】
（付記１０）前記第１のステップにおいて、前記分岐トレース情報として、組み込みシステムで実行形式プログラムを実行することにより生成される情報を用いることを特徴とする付記５〜７のいずれか一つに記載のプログラム変換方法。
【００７４】
（付記１１）前記第１のステップにおいて、前記実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスにより特定される命令が条件付き分岐命令である場合に成立予測ビットを書き換えることを特徴とする付記１０に記載のプログラム変換方法。
【００７５】
（付記１２）前記第１のステップにおいて、さらに、分岐予測が外れたときの分岐ペナルティに基づいて、前記変換前オブジェクトプログラムの条件付き分岐命令の成立予測ビットを書き換えることを特徴とする付記５〜１１のいずれか一つに記載のプログラム変換方法。
【００７６】
（付記１３）前記分岐ペナルティは、前記実行形式プログラムを実行するプロセッサに固有の値であることを特徴とする付記１２に記載のプログラム変換方法。
【００７７】
（付記１４）条件付き分岐命令の分岐成立状況に関する分岐トレース情報に基づいて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成する第１のステップと、前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成する第２のステップと、をコンピュータに実行させることを特徴とするプログラム変換プログラム。
【００７８】
（付記１５）前記第１のステップの前に、前記変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクしてシミュレータ用実行形式プログラムを生成する第３のステップと、前記シミュレータ用実行形式プログラムをシミュレータで実行して、前記第１のステップで用いられる分岐トレース情報を生成する第４のステップと、をさらに含むことを特徴とする付記１４に記載のプログラム変換プログラム。
【００７９】
（付記１６）前記第１のステップの前に、組み込みシステムで実行形式プログラムを実行して、前記第１のステップで用いられる分岐トレース情報を生成する第５のステップ、をさらに含むことを特徴とする付記１４に記載のプログラム変換プログラム。
【００８０】
（付記１７）前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合して、前記第１のステップで用いられる分岐トレース情報を生成することを特徴とする付記１５または１６に記載のプログラム変換プログラム。
【００８１】
（付記１８）前記条件付き分岐命令の複数の実行経路の実行頻度に応じた重み付けを行って、各実行経路に対する分岐トレース情報を結合することを特徴とする付記１７に記載のプログラム変換プログラム。
【００８２】
（付記１９）前記第１のステップにおいて、さらに、分岐予測が外れたときの分岐ペナルティに基づいて、前記変換前オブジェクトプログラムの条件付き分岐命令の成立予測ビットを書き換えることを特徴とする付記１４〜１８のいずれか一つに記載のプログラム変換プログラム。
【産業上の利用可能性】
【００８３】
以上のように、本発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムは、パイプライン処理を行う計算機用プログラムの作成に有用であり、特に、高速処理が要求される計算機用プログラムの作成に適している。
【図面の簡単な説明】
【００８４】
【図１】この発明の実施の形態にかかるプログラム変換装置のハードウェア構成を示すブロック図である。
【図２】この発明の実施の形態にかかるプログラム変換装置の機能的構成を示す図である。
【図３】この発明の実施の形態にかかるプログラム変換装置の処理手順を示す図である。
【図４】この発明の実施の形態にかかるプログラム変換装置のバイナリプログラム変換ツールの構成を示す図である。
【図５】条件付き分岐命令の成立予測ビットを説明する図である。
【図６】変換前オブジェクトプログラムの一例を示す図である。
【図７】分岐トレース情報の一例を示す図である。
【図８】分岐ペナルティテーブルの一例を示す図である。
【図９】変換後オブジェクトプログラムの一例を示す図である。
【図１０】統計情報の一例を示す図である。
【図１１】この発明の実施の形態にかかるプログラム変換装置の位置処理部によるアドレス特定処理を説明する図である。
【図１２】成立予測ビットの書き換え処理手順の説明に用いられる分岐ペナルティテーブルを示す図である。
【図１３】成立予測ビットの書き換え処理手順の説明に用いられる分岐トレース情報を示す図である。
【図１４】この発明の実施の形態にかかるプログラム変換装置のバイナリプログラム変換ツールによる成立予測ビットの書き換え処理手順を示す図である。
【図１５】この発明の実施の形態にかかるプログラム変換装置の分岐トレースマージツールによる分岐トレース情報の結合処理手順を示す図である。
【図１６】２つの分岐トレース情報を結合した場合の分岐トレース情報の一例を示す図である。
【図１７】分岐トレース情報を実機環境から取得する装置の機能的構成を示す図である。
【図１８】時系列ハードウェアトレース情報の一例を示す図である。
【図１９】分岐トレース情報加工ソフトウェアによる分岐トレース情報の出力処理手順を示す図である。
【図２０】従来のバイナリプログラム変換装置の構成を示す図である。
【符号の説明】
【００８５】
１１  バイナリプログラム変換ツール
１２  分岐トレースマージツール
１３、１４  リンカ
１５  シミュレータ
２１  変換前オブジェクトプログラム
２２  シミュレータ用オブジェクトプログラム
２３  シミュレータ用実行形式プログラム
２７  分岐トレース情報
２９  変換後オブジェクトプログラム
３１  実機用実行形式プログラム
４４  位置処理部
【図１】
0005082716.tif 000002
【図２】
0005082716.tif 000003
【図３】
0005082716.tif 000004
【図４】
0005082716.tif 000005
【図５】
0005082716.tif 000006
【図６】
0005082716.tif 000007
【図７】
0005082716.tif 000008
【図８】
0005082716.tif 000009
【図９】
0005082716.tif 000010
【図１０】
0005082716.tif 000011
【図１１】
0005082716.tif 000012
【図１２】
0005082716.tif 000013
【図１３】
0005082716.tif 000014
【図１４】
0005082716.tif 000015
【図１５】
0005082716.tif 000016
【図１６】
0005082716.tif 000017
【図１７】
0005082716.tif 000018
【図１８】
0005082716.tif 000019
【図１９】
0005082716.tif 000020
【図２０】
0005082716.tif 000021