(57)【要約】  【課題】ソフトウェアブレーク手法で条件付命令にブレークポイントが設定された実行形式プログラムのデバッグ実行において、デバッグ装置の介在無しで、その条件付命令の実行条件式が真であるか偽であるかに応じて、デバッグ実行を中断するか否かを決定することができる命令実行装置を提供する。  【解決手段】条件付命令を含むプログラムを解読して実行することが可能なプロセッサ４が、そのプログラムのデバッグ実行中に、解読した命令が条件付ブレーク命令であり（Ｓ２１：ＹＥＳ）、その条件付ブレーク命令が指定している実行条件のステータスフラグの値から、その実行条件が成立していると評価した場合（Ｓ２２：ＹＥＳ）、例外登録して、デバッグ実行を中断する割込み処理を実行する（ステップＳ２４）。【選択図】    図１４
2006331201.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に記憶された命令を実行する命令実行装置であって、
自装置の命令実行結果である値を記憶する記憶部と、
自装置の命令実行を中断するデバッグ命令を実行する実行部と、
前記デバッグ命令を構成するビット列から、前記記憶部に記憶されている値をオペランドとして使用する条件式を識別する識別部と、
前記記憶部に記憶されている値を参照することにより、前記識別部により識別された条件式が真であるか偽であるかを判定する判定部と、
前記条件式が偽であると判定された場合に、前記実行部における前記デバッグ命令の実行を抑止する実行制御部とを備える
ことを特徴とする命令実行装置。
【請求項２】
前記デバッグ命令の命令長は、前記命令実行装置の命令セットに含まれる命令のうち、命令長が最も短い命令の命令長以下であることを特徴とする請求項１に記載の命令実行装置。
【請求項３】
請求項１に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ方法であって、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換えることを特徴とするデバッグ方法。
【請求項４】
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、
予測不可能と判定された場合に、その旨をユーザに通知する  
ことを特徴とする請求項４に記載のデバッグ方法。
【請求項５】
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、
予測不可能と判定された場合に、前記条件付命令より後に位置し、前記条件付命令の実行条件とは異なる実行条件の第２条件付命令及び実行条件を持たない無条件命令のうち、前記条件付命令に最も近い位置にある命令を検出し、
検出された命令の位置をブレークポイントに決定する
ことを特徴とする請求項４に記載のデバッグ方法。
【請求項６】
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件の第２条件付命令及び実行条件を持たない無条件命令を少なくとも１つ検出するために検索を繰り返し、
その結果検出された命令の位置をブレークポイントに決定する  
ことを特徴とする請求項４に記載のデバッグ方法。
【請求項７】
ブレークポイントに決定された位置の命令がサブルーチンに含まれる条件付命令である場合、
前記検索における検索位置が、前記サブルーチンの終了位置に到達したか否かを判定し、
前記判定において、検索位置が前記サブルーチンの終了位置に到達したと判定された場合、前記検索を終了する  
ことを特徴とする請求項７に記載のデバッグ方法。
【請求項８】
前記検索において、前記条件付命令の実行条件の反対条件を実行条件として指定している第２条件付命令が検出されたか否かを判定し、
前記判定により、前記第２条件付命令が検出されたと判定された場合、前記検索を終了する  
ことを特徴とする請求項７に記載のデバッグ方法。
【請求項９】
請求項１に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ装置であって、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換える書換手段を備える
ことを特徴とするデバッグ装置。  
【請求項１０】
請求項１記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグプログラムであって、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換える書換ステップを含む
ことを特徴とするデバッグプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ支援技術に関し、特にデバッグ機能の一つであるソフトウェアブレーク手法を用いて条件付命令を含むプログラムにブレークポイントを設定する技術に関する。
【背景技術】
【０００２】
近年、命令自体にその命令の実行条件を指定している条件付命令を実行することが可能なプロセッサが開発されている。
そして、前記プロセッサが実行可能なプログラムをデバッグする場合、ソフトウェアブレーク手法で、そのプログラムにブレークポイントを設定することがある。
ブレークポイントとは、デバッグ対象プログラムの実行中にその実行を中断させる命令位置のことである。
【０００３】
ソフトウェアブレーク手法は、ブレークポイントに決定された位置の命令を、割り込み処理を実行するブレーク命令（デバッグ命令の一つ）に書き換える手法である。
ソフトウェアブレーク手法により、命令メモリ上の任意の命令がブレーク命令に書き換えられ、ブレーク命令を命令セットに含むプロセッサ、及び当該プロセッサを再現したエミュレータ等によりブレーク命令が実行される。
【０００４】
前記プロセッサ及び前記エミュレータは、ブレーク命令を命令メモリから読み出し、デコードし、実行することでデバッグ割り込みを発生させ、プログラムの実行を中断する。
しかし、ソフトウェアブレーク手法で、条件付命令にブレークポイントを設定してプログラムを実行すると、従来の前記プロセッサ等は、条件付命令が指定する実行条件が成立していないにも関わらず、ブレーク命令を読み出すとデバッグ割り込みを発生させ、プログラムの実行を中断していた。
【０００５】
この問題を解決する１つの方法として、下記の特許文献１には、プロセッサがデバッグ命令を実行し、デバッグ割込みが発生したい際に、デバッグ装置により、ブレーク命令に書き換えられる前の条件付命令の実行条件が成立しているか否かを判定し、実行条件が成立していない場合はプログラムを再開する割込制御方法が開示されている。
但し、ソフトウェアブレーク手法で条件付命令にブレークポイントが設定されたプログラムを、特許文献１に開示されている割込制御方法を用いて実行する場合、プロセッサがブレーク命令を実行することで割り込みを発生させ、デバッグ装置が書き換えられた元の条件付命令の実行条件をデコードして、実行条件が成立しているか否かの確認を行う。
【特許文献１】特願平１１−３４１０７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、プログラムの開発現場では、デバッグ作業にかかる時間をできるだけ短縮して、作業効率を高めたいという要望があり、上述の割込制御方法より、デバッグ実行時間を短縮することが求められている。
そこで、本発明は、ソフトウェアブレーク手法で条件付命令にブレークポイントが設定された実行形式プログラムのデバッグ実行において、デバッグ装置の介在を無しにすることでデバッグ実行時間を短縮しつつ、その条件付命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定することができる命令実行装置、そして、条件付命令を含むプログラムをデバッグ対象として、当該プログラムにブレークポイントを設定するデバッグ方法、デバッグ装置及びデバッグプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記目的を達成するために、本発明に係る命令実行装置は、記憶装置に記憶された命令を実行する命令実行装置であって、自装置の命令実行結果である値を記憶する記憶部と、自装置の命令実行を中断するデバッグ命令を実行する実行部と、前記デバッグ命令を構成するビット列から、前記記憶部に記憶されている値をオペランドとして使用する条件式を識別する識別部と、前記記憶部に記憶されている値を参照することにより、前記識別部により識別された条件式が真であるか偽であるかを判定する判定部と、前記条件式が偽であると判定された場合に、前記実行部における前記デバッグ命令の実行を抑止する実行制御部とを備えることを特徴とする。
【０００８】
ここで、命令実行装置とは、プロセッサ、当該プロセッサを再現したエミュレータ、当該プロセッサの動作を再現するシミュレータ等である。
また、本発明に係るデバッグ方法は、請求項１に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ方法であって、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換えることを特徴とする。
【０００９】
また、本発明に係るデバッグ装置は、請求項１に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ装置であって、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換える書換手段を備えることを特徴とする。  
【００１０】
また、本発明に係るデバッグプログラムは、請求項１記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグプログラムであって、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換える書換ステップを含むことを特徴とする。
【発明の効果】
【００１１】
前記構成の命令実行装置は、デバッグ装置等の外部の介在無しで、そのデバッグ命令の実行条件式が真であるか偽であるかに応じて、自装置の命令実行を中断するか否かを決定する。
よって、従来の割り込み制御方法に比べて、デバッグ実行に費やされる時間を短縮することができ、デバッグ作業の効率を高めることができる。
【００１２】
また、前記デバッグ方法及びデバッグ装置は、ブレークポイントに決定された位置の条件付命令を、その条件付命令の実行条件を実行条件とするデバッグ命令に書き換えることを行う。そして、その書き換えが行われたプログラムを上述の構成の命令実行装置にデバッグ実行させると、当該命令実行装置は、デバッグ命令をデコードした際に、デバッグ装置等の外部の介在無しで、そのデバッグ命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定する。
【００１３】
よって、従来の割り込み制御方法に比べて、デバッグ実行に費やされる時間を短縮することができ、デバッグ作業の効率を高めることができる。
また、前記デバッグプログラムを用いて、プログラムにブレークポイントを設定する場合においても、前記デバッグ方法及びデバッグ装置と同様の効果を得ることができる。
また、前記デバッグ命令の命令長は、前記命令実行装置の命令セットに含まれる命令のうち、命令長が最も短い命令の命令長以下であるとしてもよい。
【００１４】
これにより、ソフトウェアブレーク手法でブレークポイントを設定した際に、書き換え対象命令以外の命令を、誤って上書きするという問題が発生することを防ぐことができる。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、予測不可能と判定された場合に、その旨をユーザに通知するとしてもよい。
【００１５】
これにより、ブレークポイントとすべき条件付命令の実行条件が成立するかどうかの予測ができないと判定した場合、予測できない旨をユーザに通知するので、ユーザはその通知を考慮して、ブレークポイントの再設定等を行うことができる。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、予測不可能と判定された場合に、前記条件付命令より後に位置し、前記条件付命令の実行条件とは異なる実行条件の第２条件付命令及び実行条件を持たない無条件命令のうち、前記条件付命令に最も近い位置にある命令を検出し、検出された命令の位置をブレークポイントに決定するとしてもよい。
【００１６】
このデバッグ方法を用いれば、検出された命令の位置と前記条件付命令の位置をブレークポイントに決定するので、２つのブレークポイントをプログラムに設定することになる。
これにより、２つのブレークポイントが設定されたプログラムのデバッグ実行において、先のブレークポイントである条件付命令の位置でデバッグ実行が停止しなくても、次のブレークポイントである、前記条件付命令に近い位置にある命令の位置でデバッグ実行の停止を図ることができる。
【００１７】
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件の第２条件付命令及び実行条件を持たない無条件命令を少なくとも１つ検出するために検索を繰り返し、その結果検出された命令の位置をブレークポイントに決定するとしてもよい。
【００１８】
このデバッグ方法を用いれば、前記条件付命令の位置と、検出された少なくとも１つの命令の位置とをそれぞれブレークポイントに決定するので、少なくとも２つ以上のブレークポイントをプログラムに設定することになる。
これにより、ブレークポイントが設定されたプログラムのデバッグ実行において、先のブレークポイントである条件付命令の位置でデバッグ実行が停止しなくても、次のブレークポイント又はその次のブレークポイントでデバッグ実行の停止を図ることができる。
【００１９】
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令がサブルーチンに含まれる条件付命令である場合、前記検索における検索位置が、前記サブルーチンの終了位置に到達したか否かを判定し、前記判定において、検索位置が前記サブルーチンの終了位置に到達したと判定された場合、前記検索を終了するとしてもよい。
このデバッグ方法を用いれば、サブルーチンに含まれる条件付命令の位置をブレークポイントとし、その条件付命令以外の命令の位置にブレークポイントを設定する場合に、サブルーチンの境界を超えない範囲でブレークポイントとすべき命令位置の検索を行うようにすることができる。
【００２０】
また、前記デバッグ方法の前記検索において、前記条件付命令の実行条件の反対条件を実行条件として指定している第２条件付命令が検出されたか否かを判定し、前記判定により、前記第２条件付命令が検出されたと判定された場合、前記検索を終了するとしてもよい。
このデバッグ方法を用いれば、ブレークポイントとすべき条件付命令の実行条件の反対条件を実行条件とする第２条件付命令の位置をブレークポイントに設定することで、確実にデバッグ実行を停止することができるので、第２条件付命令を検出することができれば、直ちに検索を中止するようにしている。
【００２１】
これにより、余分な検索処理を減らすことができる。
【発明を実施するための最良の形態】
【００２２】
以下に本発明の実施の形態について、図面を用いて説明する。
＜概要＞
図１は、デバッグ支援システムを示す図である。
デバッグ支援システムは、ホストコンピュータ１、接続ケーブル２及び評価用ボード３から成る。
【００２３】
評価用ボード３には、デバッグ対象の実行形式プログラムを実行するプロセッサ４が搭載されている。
ホストコンピュータ１には、デバッガがインストールされており、デバッガは、ユーザの指示に応じて、又は自動的に、デバッグ対象である実行形式プログラムに、ソフトウェアブレーク手法でブレークポイントの設定を行う。
【００２４】
そのブレークポイントの設定において、実行形式プログラムに含まれている条件付命令の位置がブレークポイントに決定された場合、デバッガは、当該条件付命令を、当該条件付命令の実行条件を実行条件とする条件付ブレーク命令に書き換える処理を行う。
ユーザがデバッガに対してデバッグ実行を指示すると、デバッガは、ブレークポイントが設定された実行形式プログラムを、評価用ボード３に搭載されているプロセッサ４にデバッグ実行させる。
【００２５】
プロセッサ４は、実行形式プログラムのデバッグ実行中に、条件付ブレーク命令を読み出すと、条件付ブレーク命令の実行条件式が真であるか偽であるかに応じて、割込み処理を実行してデバッグ実行を中断する、又は割り込み処理を実行せずにデバッグ実行を続行する。
＜構成＞
ここで、ホストコンピュータ１及び評価用ボード３の構成について説明する。
【００２６】
図２は、図１に示したホストコンピュータ１の構成と、評価用ボード３の構成を示す図である。
＜ホストコンピュータ１＞
ホストコンピュータ１は、プログラム変換部１１、記憶部１２、デバッグ部１３、入出力装置１４、ＩＦ（Ｉｎｔｅｒｆａｃｅ）部１８を備える。
【００２７】
図示していないが、記憶部１２には、各種制御プログラムが記憶されており、ホストコンピュータ１に備わるプロセッサ（図示せず）が、これらの制御プログラムを実行することにより、プログラム変換部１１、デバッグ部１３等の機能部と、入出力装置１４に対する入力制御及び出力制御を実現する。
入出力装置１４は、ユーザからの指示、及び外部メディアからのデータ入力を受け付ける入力機能と、ユーザへの情報の出力、及び外部メディアへの情報の出力を実現する出力機能とを実現する装置である。
【００２８】
図示していないが、入力機能は、キーボードやマウス、光ディスクドライブ等のハードウェアと上述の入力制御により実現しており、出力機能は、モニタやスピーカ、光ディスクドライブ等のハードウェアと出力制御により実現している。
プログラム変換部１１は、ユーザの指示により、記憶部１２に記憶されているソースプログラム１５を実行形式プログラム１６に変換する機能を有する。
【００２９】
また、プログラム変換部１１は、ソースプログラム１５を実行形式プログラム１６に変換した際に、実行形式プログラム１６をニーモニックで表現したデバッグ情報１７を作成する。
プログラム変換により生成された実行形式プログラム１６、及び作成されたデバッグ情報１７は、記憶部１２に記憶される。
【００３０】
デバッグ部１３は、実行形式プログラム１６のデバッグを支援するための様々なソフトウェア・ツールを実現する機能部であり、上述のデバッガに相当する。
デバッグ部１３は、ユーザの指示により、記憶部１２に記憶されているソースプログラム１５、実行形式プログラム１６及びデバッグ情報１７を参照して、デバッグ対象の実行形式ログラム１６にブレークポイントを設定する処理や、ブレークポイントが設定された実行形式プログラム１６をプロセッサ４にデバッグ実行させる処理等、デバッグ支援に関する様々な処理を行う。
【００３１】
なお、デバッグ情報１７は、ソースプログラム１５と対応付けられており、ユーザは、ソースプログラム１５に示される所望の行にブレークポイントを設定すると、デバッグ部１３は、その所望の行に記載されている命令と対応する実行形式プログラム１６の命令位置をブレークポイントに設定する。
デバッグ部１３が有する各処理部の詳細については、後述する。
【００３２】
ＩＦ部１８は、評価用ボード３とホストコンピュータ１とを接続する接続ケーブル２を介して送受信される信号の仲介を行う機能を有する。
＜評価用ボード３＞
評価用ボード３は、プロセッサ４、ＩＦ部５、バス６、メモリ７を備える。プロセッサ４、ＩＦ部５、メモリ７は、バス６を介して接続されている。
【００３３】
ＩＦ部５は、評価用ボード３とホストコンピュータ１とを接続する接続ケーブル２を介して送受信される信号の仲介を行う機能を有する。
＜プロセッサ４＞
プロセッサ４は、デバッグ部１３から受ける制御によって、ホストコンピュータ１から送られてきた実行形式プログラム１６を読み出して、デバッグ実行を行う。そして、プロセッサ４がブレーク命令を読み出して割り込み処理を実行し、デバッグ実行を中断すると、デバッグ部１３は、その時点におけるプロセッサ４のレジスタに保持されている値や、メモリ７に記憶されているデータを評価用ボード３から読み出して、読み出した情報を入出力装置１４を通じてユーザに通知する処理を行う。
【００３４】
プロセッサ４は、条件付命令を命令セットに含むＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）型命令セットアーキテクチャーのプロセッサである。
プロセッサ４の基本的な構成は、命令セットに条件付命令が含まれるＲＩＳＣ型プロセッサの代表格であるＡＲＭ（Ａｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅｓ）プロセッサと同等である。
【００３５】
プロセッサ４が、従来のＡＲＭプロセッサと異なる点は、条件付命令の実行条件を実行条件とする条件付ブレーク命令が命令セットに含まれていて、デバッグ実行中に、その条件付ブレーク命令の実行条件が成立していれば、割り込み処理を実行する点である。
以下に、プロセッサ４の命令フォーマットと、条件付ブレーク命令フォーマットについて説明する。
＜命令フォーマット＞
図３は、プロセッサ４の３２ｂｉｔ命令フォーマットを示す図である。
【００３６】
プロセッサ４の３２ｂｉｔ命令フォーマットは、基本的には、ＡＲＭプロセッサで用いられている「ＡＲＭコード」と同じである。
同図に示すビット番号３１〜２８の４ｂｉｔは、実行条件を示すフィールドであり、ビット番号２７〜０の２８ｂｉｔは、命令を示すフィールドである。「ｃｏｎｄ」は、実行条件を示し、「ｘｘｘ」は、０と１のどちらの値もとり得ることを示している。例えば、「ｃｏｎｄ」が「０００１」であれば、実行条件は「ＺＥＲＯ」であることを示す。実行条件「ＺＥＲＯ」は、「最後に実行された演算結果が０の場合、実行する」という意味である。また、「ｃｏｎｄ」が、「１１１０」の場合、実行条件が無条件であることを示す。
【００３７】
ここで参考までに、ＡＲＭプロセッサのＡＲＭコードにおけるブレーク命令のフォーマットを図２３に示す。
同図から明らかなように、従来のブレーク命令には実行条件を指定するｃｏｎｄが存在せず、実行条件を指定できないことは自明である。
図４は、プロセッサ４の条件付ブレーク命令のフォーマットを示す図である。
【００３８】
プロセッサ４の条件付ブレーク命令のフォーマットは、実行条件指定手段として同図の「ｃｏｎｄ」として示されるフィールドを備え、ここに実行条件が記述される。また、ビット番号２７〜０の２８ｂｉｔは、全て１であり、ブレーク命令であることを示す。
また、ＡＲＭプロセッサは、１６ｂｉｔのＴｈｕｍｂコードと呼ばれる拡張命令セットを備えており、プロセッサ４も同様に１６ｂｉｔの拡張命令セットを備えている。
【００３９】
図５は、プロセッサ４の拡張命令フォーマットを示す図である。
同図に示すビット番号１１〜８の４ｂｉｔは、実行条件を示すフィールドであり、ビット番号１５〜１２の４ｂｉｔと、ビット番号７〜０の８ｂｉｔは、命令を示すフィールドである。「ｃｏｎｄ」は、実行条件を示し、「ｘｘｘ」は、０と１のどちらの値もとり得ることを示している。
ここで参考までに、ＡＲＭプロセッサのＴｈｕｍｂコードにおけるブレーク命令のフォーマットを図２４に示す。
【００４０】
同図から明らかなように、ブレーク命令は実行条件を指定するｃｏｎｄが存在せず、実行条件を指定できないことは自明である。
図６は、プロセッサ４の１６ｂｉｔ拡張命令に対応する条件付ブレーク命令のフォーマットを示す図である。
プロセッサ４の１６ｂｉｔ拡張命令に対応する条件付ブレーク命令のフォーマットは、実行条件指定手段として同図の「ｃｏｎｄ」として示されるフィールドを備え、ここに実行条件が記述される。また、ビット番号１５〜１２及び７〜０は、全て１であり、ブレーク命令であることを示す。
＜実行条件＞
プロセッサ４の命令セットアーキテクチャーにおいて、条件付命令が指定することができる実行条件は、「ＺＥＲＯ」、「ＮＺＥＲＯ」、「ＣＡＲＲＹ」、「ＮＣＡＲＲＹ」、「ＯＶＥＲ」、「ＮＯＶＥＲ」の６つがある。
【００４１】
「ＺＥＲＯ」は、上述したような意味の実行条件であり、「ＮＺＥＲＯ」は、「ＺＥＲＯ」の反対条件である。
「ＣＡＲＲＹ」は、「最後に実行された演算結果にキャリーが生じた場合、実行する」という意味の実行条件である。
「ＮＣＡＲＲＹ」は、「ＣＡＲＲＹ」の反対条件である。
【００４２】
「ＯＶＥＲ」は、最後に符号付きデータの算術演算を実行した結果、その演算結果に桁あふれが起きた場合、実行する」という意味の実行条件である。
「ＮＯＶＥＲ」は、「ＯＶＥＲ」の反対条件である。
図２２は、各実行条件の反対条件を示した表である。
プロセッサ４は、各実行条件が成立しているか否かを示すステータスフラグレジスタを備えており、条件付命令が命令を読み出した際に、その実行条件と対応するステータスフラグレジスタにフラグが立ったかどうかで、実行条件が成立しているかどうかを評価する。
＜パイプライン処理＞
図７は、プロセッサ４のパイプライン処理の動作を説明するために用いるパイプライン構造を示す図である。
【００４３】
プロセッサ４は、５段パイプライン構造であり、メモリ７から読み出した命令をプロセッサ４に備わる命令バッファ（図示せず）にフェッチするＩＦ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ）ステージ７１と、命令バッファにフェッチされた命令をデコードするＤＣ（Ｄｅｃｏｄｅ）ステージ７２と、デコードされた命令を実行するＥＸ（Ｅｘｅｃｕｔｅ）ステージ７３と、レジスタやメモリにアクセスを行うＭＥＭ（Ｍｅｍｏｒｙ）ステージ７４と、命令の実行結果をレジスタやメモリに書き込む（ライトバック）するＷＢ（Ｗｒｉｔｅ  Ｂａｃｋ）ステージ７５の５つのステージで構成される。
【００４４】
ＥＸステージ７３と、ＭＥＭステージ７４と、ＷＢステージ７５は、各ステージにおいて任意の命令によりある実行条件に対応するステータスフラグの値が変化した場合、その値を通知信号７７を介してＤＣステージ７２に通知（フォワーディング）する。
ＤＣステージ７２は、デコードした命令が条件付命令である場合、その条件付命令の実行条件が成立しているか否かをステータスフラグの値から評価する。
【００４５】
評価した結果、その実行条件が成立しており、且つ、その条件付命令が条件付ブレーク命令である場合、ＤＣステージ７２は、割り込み処理の実行登録である例外登録を行う。
一方、評価した結果、その実行条件が満たされていなければ、ＥＸステージ７３は、デコードされた条件付命令を実行しない。
ＤＣステージ７２が例外を登録した場合、ＩＦステージ７１に対して、命令バッファにフェッチした命令を消去（フラッシュ）するために、制御信号７８を発する。
【００４６】
ＤＣステージ７２で登録された例外は、ＷＢステージ７５で検出され、ＷＢステージ７５は、例外を検出すると、ＩＦステージ７１に割り込みベクタ信号７１を発し、次に実行すべき命令のアドレスを通知して、割り込み処理を実行する。
＜デバッグ部１３＞
ここで、デバッグ部１３が備える各処理部について説明する。
【００４７】
図８は、デバッグ部１３が備える各処理部を示す図である。
デバッグ部１３は、入出力処理部８０１、実行形式プログラム・デバッグ情報読み込み処理部８０２、命令参照・変更処理部８０３、実行・停止処理部８０４、デバッグ情報検索処理部８０５、ブレークポイント設定処理部８０６を備える。
入出力処理部８０１は、ユーザからの入力指示受付や、モニタに表示すべき情報の出力処理を行う。
【００４８】
実行形式プログラム・デバッグ情報読み込み処理部８０２は、記憶部１２から実行形式プログラム１６とデバッグ情報１７を読み込む処理を行う。
命令参照・変更処理部８０３は、入出力処理部８０１で受け付けたユーザからの入力指示に基づいて、実行形式プログラム・デバッグ情報読み込み処理部８０２で読み込んだ実行形式プログラム１６とデバッグ情報１７から所望の命令を参照し、或いは所望の命令を変更する処理を行う。
【００４９】
実行・停止処理部８０４は、入出力処理部８０１で受け付けたユーザからの入力指示に基づいて、又は、自動的にプロセッサ４にデバッグ実行させ、或いはデバッグ実行を停止させる処理を行う。
デバッグ情報検索処理部８０５は、入出力処理部８０１で受け付けたユーザからの入力指示に基づいて、又は自動的に、デバッグ情報１７から所望の命令の検索を行う。
【００５０】
ブレークポイント設定処理部８０６は、入出力処理部８０１で受け付けたユーザからの入力指示に基づいて、又は自動的に、ある命令位置にブレークポイントの設定を行う。
＜動作＞
ここで、ブレークポイント設定処理部８０６が行うブレークポイントの設定処理について説明する。
＜ブレークポイント設定処理＞
図１２は、ブレークポイント設定処理の動作フローを示す図である。
【００５１】
まず、ブレークポイント設定処理部８０６は、ブレークポイントの位置を決定する処理が行われる（ステップＳ１）。
次に、ブレークポイント設定処理部８０６は、ブレークポイントに決定された位置（アドレス）とその位置の命令を保存する（ステップＳ２）。
そして、ブレークポイントに決定された位置の命令が条件付命令である場合（ステップＳ３：ＹＥＳ）、ブレークポイント設定処理部８０６は、その条件付命令の実行条件を実行条件とする条件付ブレーク命令に書き換える（ステップＳ４）。
【００５２】
一方、ステップＳ３において、ブレークポイントに決定された位置の命令が条件付命令でない場合（ステップＳ３：ＮＯ）、その命令を、無条件ブレーク命令に書き換える（ステップＳ５）。
図１３は、上述のステップＳ４及びステップＳ５で行われるブレークポイントに決定された位置の命令をブレーク命令に書き換えるブレーク命令書換処理を示す図である。
【００５３】
まず、ブレークポイント設定処理部８０６は、ブレークポイントに決定された位置の命令が、３２ｂｉｔ命令であるかどうかを判定する（ステップＳ１１）。
３２ｂｉｔ命令であれば（ステップＳ１１：ＹＥＳ）、ブレークポイント設定処理部８０６は、３２ｂｉｔ命令用のマスクとブレーク命令パターンを選択し（ステップＳ１２）、命令を３２ｂｉｔ命令用のマスクでマスクし（ステップＳ１４）、マスクした結果とブレーク命令パターンとの論理和を行って、ブレーク命令に書き換える（ステップＳ１５）。
【００５４】
ステップＳ１１において、対象命令が１６ｂｉｔ命令であれば（ステップＳ１１：ＮＯ）、ブレークポイント設定処理部８０６は、１６ｂｉｔ命令用のマスクとブレーク命令パターンを選択し（ステップＳ１３）、命令を１６ｂｉｔ命令用のマスクでマスクし（ステップＳ１４）、マスクした結果とブレーク命令パターンとの論理和を行って、ブレーク命令に書き換える（ステップＳ１５）。
【００５５】
ここで、ブレークポイントに決定された位置の命令がどのようにして条件付又は無条件ブレーク命令に書き換えられるかについて、具体的に説明する。
３２ｂｉｔ命令用のマスクは、図３に示す３２ｂｉｔ命令フォーマットを用いて説明すると、ビット番号３１〜２８の４ｂｉｔが全て１で、ビット番号２７〜０までの２８ｂｉｔが全て０である。
【００５６】
また、３２ｂｉｔ命令用のブレーク命令パターンは、ビット番号３１〜２８の４ｂｉｔが全て０で、ビット番号２７〜０までの２８ｂｉｔが全て１である。
一方、１６ｂｉｔ命令用のマスクは、図５に示す１６ｂｉｔ命令フォーマットを用いて説明すると、ビット番号１１〜８の４ｂｉｔが全て１で、他のビット番号は全て０である。
【００５７】
また、１６ｂｉｔ命令用のブレーク命令パターンは、ビット番号１１〜８の４ｂｉｔが全て０で、他のビット番号は全て１である。
ブレークポイントに決定された位置の命令が３２ｂｉｔ命令の場合、ブレークポイント設定処理部８０６は、当該命令と上述の３２ｂｉｔ用のマスクとの論理積を取ってマスクすることで、ビット番号３１〜２８の実行条件を示す４ｂｉｔはそのままで、ビット番号２７〜０までの２８ｂｉｔを全て０にする。
【００５８】
そして、ブレークポイント設定処理部８０６は、マスクした結果と、ブレーク命令パターンとの論理和を行うことで、実行条件を示すビット番号３１〜２８の４ｂｉｔはそのままで、ビット番号２７〜０までの２８ｂｉｔが全て１のブレーク命令に書き換える。
一方、ブレークポイントに決定された位置の命令が１６ｂｉｔ命令の場合、ブレークポイント設定処理部８０６は、当該命令と上述の１６ｂｉｔ用のマスクとの論理積を取ってマスクすることで、ビット番号１１〜８の実行条件を示す４ｂｉｔはそのままで、他のビット番号のｂｉｔを全て０にすることができる。
【００５９】
そして、ブレークポイント設定処理部８０６は、マスクした結果と、ブレーク命令パターンとの論理和を行うことで、実行条件を示すビット番号１１〜８の４ｂｉｔは、そのままで、他のビット番号のｂｉｔが全て１のブレーク命令に書き換える。
＜ブレークポイント設定処理の具体例１＞
次に、条件付命令の位置がブレークポイントに決定された場合の、ブレークポイント設定処理の具体例について説明する。
【００６０】
図９は、ソースプログラム１５の一部を表で示した図であり、図１０は、ソースプログラム１５を実行形式プログラム１６に変換した際に作成される、実行形式プログラム１６をニーモニックで表現したデバッグ情報１７の一部を表で示した図である。図９に示すソースプログラム１５の一部は、図１０に示す実行形式プログラム１６の一部と対応している。
【００６１】
図９に示す表には、ソースコードの行番号と、Ｃ言語で表現された実行文が記述されている。この表に示されるソースプログラムの意味は、「関数ｓｕｂに引数１を与えて呼び出し、戻り値を変数ｒに代入する（行番号１０）。変数ｒの値が０であれば、変数ｒに２を足す（行番号１１〜１３）。」である。
一方、図１０に示す表には、命令のアドレスと、命令の実行条件と、ニーモニックで表現された命令が記述されている。この表に示されるニーモニックの意味は、「レジスタＲ１に１を格納する（アドレス０ｘ８０００００００）。次の命令のアドレスをスタックに退避し、関数ｓｕｂに分岐する（アドレス０ｘ８００００００４）。関数ｓｕｂの結果が０であれば、レジスタＲ１に格納されている値に２を足したものをレジスタＲ１に格納する（アドレス０ｘ８００００００８）。関数ｓｕｂの結果が０でなければ、レジスタＲ１の値を、スタックポインタの値に０ｘ１０を足した値が示すアドレスのメモリに書き込む（アドレス０ｘ８００００００Ｃ）。」である。
【００６２】
図１０に示す表において、アドレス０ｘ８００００００８のＡＤＤ命令の実行条件として、「ＺＥＲＯ」が指定されている。
図１０に示す表において、実行条件「ＺＥＲＯ」は、直前のＣＡＬＬ命令で呼び出される関数ｓｕｂの結果が０であれば、ＡＤＤ命令を実行するという実行条件を示す。
図１０に示す表において、アドレス０ｘ８００００００８の位置、すなわち実行条件［ＺＥＲＯ］を指定する条件付命令の位置を、ブレークポイントとした場合、ブレークポイント設定処理部８０６は、図１１に示すように、アドレス０ｘ８００００００８の実行条件「ＺＥＲＯ」は、そのままで、加算命令「ＡＤＤ  Ｒ１，２」を、ブレーク命令を示す「ＢＲＫ」に書き換える。
＜プロセッサ４の動作＞
ここで、プロセッサ４のデバッグ実行における割り込み発生処理について説明する。
【００６３】
図１４は、前記割り込み発生処理の動作を説明するためのフロー図である。
まず、プロセッサ４は、デバッグ実行中に、デコードした命令が条件付ブレーク命令である場合（ステップＳ２１：ＹＥＳ）、その条件付ブレーク命令の実行条件の成立状態を示すステータスフラグを確認し（ステップＳ２２）、その結果、実行条件が成立していれば（ステップＳ２３：ＹＥＳ）、例外登録をして、命令バッファに記憶された命令をフラッシュし、割り込み処理を実行する（ステップＳ２４）。
【００６４】
上述のパイプライン処理で説明したように、条件付命令の実行条件は、ＤＣステージ７２で評価している。
以上説明したように、命令セットに条件付命令の実行条件を、実行条件として指定できる条件付ブレーク命令が含まれているプロセッサ４に、ソフトウェアブレーク手法で条件付命令を条件付ブレーク命令に書き換えた実行形式プログラムをデバッグ実行させると、プロセッサ４は、条件付ブレーク命令をデコードした際に、デバッグ装置等の外部の介在無しで、その条件付ブレーク命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定する。
【００６５】
すなわち、上述のプロセッサ４と、上述のブレークポイント設定処理を行うホストコンピュータ１を用いれば、従来の割り込み制御方法のようにデバッグ装置のシミュレーションを必要としないので、その分、デバッグ実行時間を短縮することができ、デバッグ作業の効率を高めることができる。
なお、本発明は上述の内容に限定されないのは勿論である。以下の内容も本発明に含まれる。
＜予測可否判定処理＞
デバッグ部１３は、条件付命令の位置をブレークポイントに決定した場合、その条件付命令の実行条件が、デバッグ実行中に成立するかどうかを予測する処理を行うようにしてもよい。そして、予測不可能であれば、その旨をユーザに通知するようにしてもよい。
【００６６】
図１８は、デバッグ部１３が、ブレークポイントの設定前に、ブレークポイントとすべき条件付命令の実行条件が、デバッグ実行中に成立するかどうかについての予測可否を判定する予測可否判定処理を示すフロー図である。
まず、デバッグ情報検索処理部８０５は、ブレークポイントとすべき位置の条件付命令の、実行条件の状態変化を示すステータスフラグを０にする（ステップＳ３１）。
【００６７】
続いて、検索開始位置であるデバッグ実行開始位置の命令を読み出す。読み出した命令がブレークポイントとすべき位置の指定された条件付命令であれば（ステップＳ３２：ＹＥＳ）、ステップＳ４３に進む。
そうでなければ（ステップＳ３２：ＮＯ）、デバッグ情報検索処理部８０５は、その命令が他の実行条件を指定する条件付命令（以下、「第２条件付命令」と言う。）であるか否かを判定する（ステップＳ３３）。
【００６８】
第２条件付命令であれば（ステップＳ３３：ＹＥＳ）、続いて、デバッグ情報検索処理部８０５は、その実行条件の状態変化を示すステータスフラグが１であるかどうかを確認する（ステップＳ３９）。
第２条件付命令の実行条件のステータスフラグが１であれば（ステップＳ３９：ＹＥＳ）、続いて、デバッグ情報検索処理部８０５は、第２条件付命令が分岐命令であるかどうかを確認する（ステップＳ４０）。
【００６９】
第２条件付命令が分岐命令であれば（ステップＳ４０：ＹＥＳ）、デバッグ情報検索処理部８０５は、ブレークポイントとすべき位置の条件付命令の実行条件成立は、予測不可能と判定する（ステップＳ４１）。
入出力処理部８０１は、ブレークポイント設定処理部８０６の予測不可能という判定に基づき、その旨をユーザに通知する出力処理を行う。
【００７０】
一方、ステップＳ３３において、検索位置の命令が第２条件付命令でなければ（ステップＳ３３：ＮＯ）、デバッグ情報検索処理部８０５は、続いて、その命令が、いずれかの条件付命令の実行条件に影響を及ぼす命令（以下、「条件生成命令」と言う。）であるかどうかを確認する（ステップＳ３４）。
確認した結果、条件生成命令であれば（ステップＳ３４：ＹＥＳ）、デバッグ情報検索処理部８０５は、その条件生成命令により影響を受ける実行条件のステータスフラグを１にして（ステップＳ３６）、検索位置を次の命令に移す（ステップＳ３８）。
【００７１】
ステップＳ３４において、検索位置の命令が条件生成命令でなければ（ステップＳ３４：ＮＯ）、デバッグ情報検索処理部８０５は、その命令が分岐命令かどうかを確認し、分岐命令であれば（ステップＳ３５：ＹＥＳ）、検索位置を分岐先へ移し（ステップＳ２７）、ステップＳ３２に戻る。
ステップＳ３５において、検索位置の命令が分岐命令でなければ（ステップＳ３５：ＮＯ）、デバッグ情報検索処理部８０５は、検索位置を次の命令に移す（ステップＳ３８）。
【００７２】
デバッグ情報検索処理部８０５は、ステップＳ４３において、ブレークポイントとすべき位置の条件付命令の実行条件成立は予測可能と判定し（ステップＳ４３）、ブレークポイント設定処理部８０６は、その判定結果により、指定された条件付命令の位置をブレークポイントに決定する（ステップＳ４４）。その後、ブレークポイント設定処理部８０６は、図１２に示したステップＳ２の処理に進む。
＜検索処理１＞
上述の予測可否判定処理のステップＳ４１で、デバッグ情報検索処理部８０５が、ブレークポイントとすべき位置の、条件付命令の実行条件成立の予測は不可能と判定した場合、ブレークポイントとすべき位置の条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件を実行条件とする第２条件付命令及び実行条件を持たない無条件命令のうち、その条件付命令に最も近い位置にある命令を検出して、ブレークポイントとすべき位置の条件付命令と共に、その検出された命令の位置を予備のブレークポイントとするようにしてもよい。
【００７３】
図１９は、予備のブレークポイントを検索する検索処理を示すフロー図である。
デバッグ情報検索処理部８０５は、ステップＳ４１において、ブレークポイントとすべき位置の条件付命令の、実行条件成立の予測が不可能と判定した場合、指定された条件付命令に後続する次の命令を検索する（ステップＳ４５）。
検索位置の命令が、ブレークポイントとすべき指定された条件付命令の実行条件とは異なる実行条件を実行条件とする条件付命令である場合（ステップＳ４６：ＹＥＳ）、デバッグ情報検索処理部８０５は、ステップＳ４９に進む。
【００７４】
ステップＳ４６において、検索位置の命令が、ブレークポイントとすべき条件付命令の実行条件とは異なる実行条件を実行条件とする条件付命令でない場合（ステップＳ４６：ＮＯ）、デバッグ情報検索処理部８０５は、その検索位置の命令が、実行条件を持たない無条件命令であるかどうかを確認する（ステップＳ４７）。
その結果、実行条件を持たない無条件命令である場合（ステップＳ４７：ＹＥＳ）、デバッグ情報検索処理部８０５は、ステップＳ４９に進み、そうでない場合（ステップＳ４７：ＮＯ）は、次の命令を検索し（ステップＳ４８）、ステップＳ４６の処理に戻る。
【００７５】
ブレークポイント設定処理部８０６は、指定された条件付命令と検出された命令の位置それぞれをブレークポイントに決定する（ステップＳ４９）。その後、ブレークポイント設定処理部８０６は、図１２に示したステップＳ２の処理に進む。
＜検索処理２＞
サブルーチンをデバッグ実行する場合に、そのサブルーチンに含まれる条件付命令の位置をブレークポイントに決定した場合、上述の予測可否判定処理を行う代わりに、以下に説明する検索処理を行って、予備のブレークポイントを１以上決定するようにしてもよい。
【００７６】
図２０は、予備のブレークポイントを１以上決定するための検索処理を示すフロー図である。
まず、デバッグ情報検索処理部８０５は、図２１に示す条件検索表２１０に示す各実行条件のステータスフラグを０にして、検索を開始する。
検索位置がサブルーチンの終了位置である場合（ステップＳ５１：ＹＥＳ）、ステップＳ５９に進む。
【００７７】
検索位置がサブルーチンの終了位置でなく（ステップＳ５１：ＮＯ）、その位置の命令が条件付命令でなければ、すなわち、無条件命令であれば（ステップＳ５２：ＮＯ）、ステップＳ５９に進む。
検索位置の命令が条件付命令であり（ステップＳ５２：ＹＥＳ）、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一である場合（ステップＳ５３：ＹＥＳ）、デバッグ情報検索処理部８０５は、検索位置を次の命令に移す（ステップＳ５７）。
【００７８】
ステップＳ５３において、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一ではなく（ステップＳ５３：ＮＯ）、反対条件である場合（ステップＳ５４：ＹＥＳ）、デバッグ情報検索処理部８０５は、該当条件のステータスフラグを１にする（ステップＳ５８）。その後、ステップＳ５９に進む。
ステップＳ５３において、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一ではなく（ステップＳ５３：ＮＯ）、反対条件でない場合（ステップＳ５４：ＮＯ）、デバッグ情報検索処理部８０５は、該当条件のステータスフラグを１にする（ステップＳ５８）。その後、条件検索表２１０の全てのステータスフラグが１になった場合（ステップＳ５６：ＹＥＳ）、検索を終了する。
【００７９】
ステップＳ５６において、条件検索表２１０の全てのステータスフラグが１でない場合（ステップＳ５６：ＮＯ）、デバッグ情報検索処理部８０５は、検索位置を次の命令に移す（ステップＳ５７）。
ステップＳ５６において、デバッグ情報検索処理部８０５は、サブルーチンの終了位置、無条件命令の位置、検索済み実行条件の反対条件の条件付命令位置をブレークポイントの候補位置として登録し（ステップＳ５９）、検索処理を終了する。
【００８０】
ブレークポイント設定処理部８０６は、上述の検索処理においてブレークポイントの候補位置として登録された位置のうち少なくとも１つをブレークポイントに決定する。
＜ブレークポイント設定処理の具体例２＞
ここで、あるサブルーチンをデバッグ実行する際に、そのサブルーチン内に含まれる条件付命令の位置をブレークポイントとし、サブルーチン内で必ずデバッグ実行を停止させるブレークポイント設定処理の具体例について説明する。
【００８１】
図１５は、ソースプログラム１５に含まれるサブルーチンの一部を表で示した図であり、図１６は、ソースプログラム１５を実行形式プログラム１６に変換した際に作成される、実行形式プログラム１６をニーモニックで表現したデバッグ情報１７の一部を表で示した図である。
図１５に示すソースプログラム１５に含まれるサブルーチンの一部は、図１６に示す実行形式プログラム１６の一部と対応している。
【００８２】
図１５に示す表には、ソースコードの行番号と、Ｃ言語で表現された実行文が記述されている。この表に示されるソースプログラムの意味は、「関数ｓｕｂに引数１を与えて呼び出し、戻り値を変数ｒに代入する（行番号１０）。変数ｒの値が０であれば、メインプログラムに戻る（行番号１１〜１３）。」である。
一方、図１６に示す表には、命令のアドレスと、命令の実行条件と、ニーモニックで表現された命令が記述されている。
【００８３】
この表に示されるニーモニックの意味は、「レジスタＲ１に１を格納する（アドレス０ｘ８０００００００）。次の命令のアドレスをスタックに退避し、関数ｓｕｂに分岐する（アドレス０ｘ８００００００４）。関数ｓｕｂの結果が０であれば、スタックポインタから戻り番地をプログラムカウンタに設定し、メインプログラムに復帰する（アドレス０ｘ８００００００８）。関数ｓｕｂの結果が０でなければ、レジスタＲ１の値を、スタックポインタの値に０ｘ１０を足した値が示すアドレスのメモリに書き込む（アドレス０ｘ８００００００Ｃ）。」である。
【００８４】
図１６に示す表において、アドレス０ｘ８００００００８の位置、すなわち実行条件［ＺＥＲＯ］を指定する条件付命令の位置を、ブレークポイントとした場合、ブレークポイント設定処理部８０６は、図１７に示すように、アドレス０ｘ８００００００８の実行条件「ＺＥＲＯ」は、そのままで、リターン命令「ＲＥＴ」を、ブレーク命令を示す「ＢＲＫ」に書き換えると共に、上述の検索処理により検出された、リターン命令「ＲＥＴ」に後続アドレス０ｘ８００００００Ｃの移動命令「ＭＯＶ（ＳＰ＋０ｘ１０），Ｒ１」を、ブレーク命令を示す「ＢＲＫ」に書き換える。
＜補足＞
（１）本発明は、上述のブレークポイント設定処理を行うデバッグ装置としてもよいし、デバッガとしてもよいし、ブレークポイント設定方法としてもよい。
（２）上述の実施の形態では、ＲＩＳＣ型プロセッサについて説明したが、ＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）型プロセッサに本発明を適用してもよい。
（３）プロセッサ４は、評価用ボード３に搭載されているとしたが、ホストコンピュータ１内に備わっていてもよい。また、プロセッサ４の代わりにプロセッサ４を再現するエミュレータが評価用ボード３及びホストコンピュータ１内に備わっていて、そのエミュレータがデバッグ対象の実行形式プログラムをデバッグ実行してもよい。また、プロセッサ４の代わりにプロセッサ４の動作を再現するシミュレータがホストコンピュータ１内にプログラムとして備わっていてもよい。また、評価ボードの代わりに、プロセッサ４の動作を再現するシミュレータプログラムを備えるシステムであってもよい。
（４）上記実施の形態では、プロセッサ４の命令フォーマットは、３２ｂｉｔと１６ｂｉｔ命令の２種類としたが、１種類或いは３種類以上あってもよいし、命令フォーマット自体も、実行条件を示すｃｏｎｄの位置を限定して説明したが、その位置以外の位置で実行条件を指定する命令フォーマットであってもよい。
（５）異なる命令長の命令を自由に実行することが可能なプロセッサに本発明を適用する場合、実行条件を有する最小の命令長（本発明の実施の形態で言えば１６ｂｉｔ）のブレーク命令を用意し、それをもってより長い命令長のブレーク命令を代替するものとしてもよい。
（６）上述の実施の形態では、説明を簡単にするため、命令フォーマットの一部のビットが実行条件を示すとしている。しかし、本発明の本質は、ブレーク命令に置き換えられてる命令の実行条件と、ブレーク命令の実行条件とを同じにすることである。例えば、実行条件を示すビットが命令フォーマットの特定位置にない場合でも、その実行条件を特定することができればよい。また、ブレーク命令に置き換えられる命令の実行条件が容易に識別可能で、ブレーク命令に同じ実行条件を設定することができればよい。
【産業上の利用可能性】
【００８５】
本発明は、ソフトウェア開発において行われるデバッグに有用である。
【図面の簡単な説明】
【００８６】
【図１】デバッグ支援システムの外観を示す図である。
【図２】ホストコンピュータ１の構成と、評価用ボード３の構成を示す図である。
【図３】プロセッサ４の３２ｂｉｔ命令フォーマットを示す図である。
【図４】条件付ブレーク命令のフォーマットを示す図である。
【図５】プロセッサ４の１６ｂｉｔ拡張命令フォーマットを示す図である。
【図６】１６ｂｉｔ拡張命令セットにおける、条件付ブレーク命令のフォーマットを示す図である。
【図７】プロセッサ４のパイプライン構造を示す図である。
【図８】デバッグ部１３が備える各処理部を示す図である。
【図９】ソースプログラムの一例を示す図である。
【図１０】図９のソースプログラムに対応する実行形式プログラム１６をニーモニックで表現したデバッグ情報１７の一部を表で示した図である。
【図１１】ブレークポイントが設定された実行形式プログラム１６をニーモニックで表現したデバッグ情報１７の一部を表で示した図である。
【図１２】ブレークポイント設定処理のフロー図である。
【図１３】ブレーク命令書換処理のフロー図である。
【図１４】割り込み処理の発生動作を説明するためのフロー図である。
【図１５】ソースプログラムの一例を示す図である。
【図１６】図１５のソースプログラムに対応する実行形式プログラム１６をニーモニックで表現したデバッグ情報１７の一部を表で示した図である。
【図１７】ブレークポイントが設定された実行形式プログラム１６をニーモニックで表現したデバッグ情報１７の一部を表で示した図である。
【図１８】予測可否判定処理を示すフロー図である。
【図１９】予備のブレークポイントを検索する検索処理を示すフロー図である。
【図２０】予備のブレークポイントを１以上決定するための検索処理を示すフロー図である。
【図２１】条件検索表を示す図である。
【図２２】各実行条件の反対条件を示した対応表である。
【図２３】ＡＲＭプロセッサのＡＲＭコードにおけるブレーク命令のフォーマットを示す図である。
【図２４】ＡＲＭプロセッサのＴｈｕｍｂコードにおけるブレーク命令のフォーマットを示す図である。
【符号の説明】
【００８７】
１  ホストコンピュータ
２  接続ケーブル
３  評価用ボード
４  プロセッサ
５、１８  ＩＦ部
６  バス
７  メモリ
１１  プログラム変換部
１２  記憶部
１３  デバッグ部
１４  入出力装置
１５  ソースプログラム
１６  実行形式プログラム
１７  デバッグ情報
【図１】
2006331201.tif 000003
【図２】
2006331201.tif 000004
【図３】
2006331201.tif 000005
【図４】
2006331201.tif 000006
【図５】
2006331201.tif 000007
【図６】
2006331201.tif 000008
【図７】
2006331201.tif 000009
【図８】
2006331201.tif 000010
【図９】
2006331201.tif 000011
【図１０】
2006331201.tif 000012
【図１１】
2006331201.tif 000013
【図１２】
2006331201.tif 000014
【図１３】
2006331201.tif 000015
【図１４】
2006331201.tif 000016
【図１５】
2006331201.tif 000017
【図１６】
2006331201.tif 000018
【図１７】
2006331201.tif 000019
【図１８】
2006331201.tif 000020
【図１９】
2006331201.tif 000021
【図２０】
2006331201.tif 000022
【図２１】
2006331201.tif 000023
【図２２】
2006331201.tif 000024
【図２３】
2006331201.tif 000025
【図２４】
2006331201.tif 000026