JP4718901B2 - 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム - Google Patents
命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム Download PDFInfo
- Publication number
- JP4718901B2 JP4718901B2 JP2005155902A JP2005155902A JP4718901B2 JP 4718901 B2 JP4718901 B2 JP 4718901B2 JP 2005155902 A JP2005155902 A JP 2005155902A JP 2005155902 A JP2005155902 A JP 2005155902A JP 4718901 B2 JP4718901 B2 JP 4718901B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- conditional
- execution
- breakpoint
- execution condition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 86
- 238000003860 storage Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 description 81
- 238000011156 evaluation Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 15
- 230000001343 mnemonic effect Effects 0.000 description 11
- 210000003813 thumb Anatomy 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012905 input function Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3648—Debugging of software using additional hardware
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
そして、前記プロセッサが実行可能なプログラムをデバッグする場合、ソフトウェアブレーク手法で、そのプログラムにブレークポイントを設定することがある。
ブレークポイントとは、デバッグ対象プログラムの実行中にその実行を中断させる命令位置のことである。
ソフトウェアブレーク手法により、命令メモリ上の任意の命令がブレーク命令に書き換えられ、ブレーク命令を命令セットに含むプロセッサ、及び当該プロセッサを再現したエミュレータ等によりブレーク命令が実行される。
しかし、ソフトウェアブレーク手法で、条件付命令にブレークポイントを設定してプログラムを実行すると、従来の前記プロセッサ等は、条件付命令が指定する実行条件が成立していないにも関わらず、ブレーク命令を読み出すとデバッグ割り込みを発生させ、プログラムの実行を中断していた。
但し、ソフトウェアブレーク手法で条件付命令にブレークポイントが設定されたプログラムを、特許文献1に開示されている割込制御方法を用いて実行する場合、プロセッサがブレーク命令を実行することで割り込みを発生させ、デバッグ装置が書き換えられた元の条件付命令の実行条件をデコードして、実行条件が成立しているか否かの確認を行う。
そこで、本発明は、ソフトウェアブレーク手法で条件付命令にブレークポイントが設定された実行形式プログラムのデバッグ実行において、デバッグ装置の介在を無しにすることでデバッグ実行時間を短縮しつつ、その条件付命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定することができる命令実行装置、そして、条件付命令を含むプログラムをデバッグ対象として、当該プログラムにブレークポイントを設定するデバッグ方法、デバッグ装置及びデバッグプログラムを提供することを目的とする。
また、本発明に係るデバッグ方法は、請求項1に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ方法であって、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換えることを特徴とする。
よって、従来の割り込み制御方法に比べて、デバッグ実行に費やされる時間を短縮することができ、デバッグ作業の効率を高めることができる。
また、前記デバッグプログラムを用いて、プログラムにブレークポイントを設定する場合においても、前記デバッグ方法及びデバッグ装置と同様の効果を得ることができる。
また、前記デバッグ命令の命令長は、前記命令実行装置の命令セットに含まれる命令のうち、命令長が最も短い命令の命令長以下であるとしてもよい。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、予測不可能と判定された場合に、その旨をユーザに通知するとしてもよい。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、予測不可能と判定された場合に、前記条件付命令より後に位置し、前記条件付命令の実行条件とは異なる実行条件の第2条件付命令及び実行条件を持たない無条件命令のうち、前記条件付命令に最も近い位置にある命令を検出し、検出された命令の位置をブレークポイントに決定するとしてもよい。
これにより、2つのブレークポイントが設定されたプログラムのデバッグ実行において、先のブレークポイントである条件付命令の位置でデバッグ実行が停止しなくても、次のブレークポイントである、前記条件付命令に近い位置にある命令の位置でデバッグ実行の停止を図ることができる。
これにより、ブレークポイントが設定されたプログラムのデバッグ実行において、先のブレークポイントである条件付命令の位置でデバッグ実行が停止しなくても、次のブレークポイント又はその次のブレークポイントでデバッグ実行の停止を図ることができる。
このデバッグ方法を用いれば、サブルーチンに含まれる条件付命令の位置をブレークポイントとし、その条件付命令以外の命令の位置にブレークポイントを設定する場合に、サブルーチンの境界を超えない範囲でブレークポイントとすべき命令位置の検索を行うようにすることができる。
このデバッグ方法を用いれば、ブレークポイントとすべき条件付命令の実行条件の反対条件を実行条件とする第2条件付命令の位置をブレークポイントに設定することで、確実にデバッグ実行を停止することができるので、第2条件付命令を検出することができれば、直ちに検索を中止するようにしている。
<概要>
図1は、デバッグ支援システムを示す図である。
デバッグ支援システムは、ホストコンピュータ1、接続ケーブル2及び評価用ボード3から成る。
ホストコンピュータ1には、デバッガがインストールされており、デバッガは、ユーザの指示に応じて、又は自動的に、デバッグ対象である実行形式プログラムに、ソフトウェアブレーク手法でブレークポイントの設定を行う。
ユーザがデバッガに対してデバッグ実行を指示すると、デバッガは、ブレークポイントが設定された実行形式プログラムを、評価用ボード3に搭載されているプロセッサ4にデバッグ実行させる。
<構成>
ここで、ホストコンピュータ1及び評価用ボード3の構成について説明する。
<ホストコンピュータ1>
ホストコンピュータ1は、プログラム変換部11、記憶部12、デバッグ部13、入出力装置14、IF(Interface)部18を備える。
入出力装置14は、ユーザからの指示、及び外部メディアからのデータ入力を受け付ける入力機能と、ユーザへの情報の出力、及び外部メディアへの情報の出力を実現する出力機能とを実現する装置である。
プログラム変換部11は、ユーザの指示により、記憶部12に記憶されているソースプログラム15を実行形式プログラム16に変換する機能を有する。
プログラム変換により生成された実行形式プログラム16、及び作成されたデバッグ情報17は、記憶部12に記憶される。
デバッグ部13は、ユーザの指示により、記憶部12に記憶されているソースプログラム15、実行形式プログラム16及びデバッグ情報17を参照して、デバッグ対象の実行形式ログラム16にブレークポイントを設定する処理や、ブレークポイントが設定された実行形式プログラム16をプロセッサ4にデバッグ実行させる処理等、デバッグ支援に関する様々な処理を行う。
デバッグ部13が有する各処理部の詳細については、後述する。
<評価用ボード3>
評価用ボード3は、プロセッサ4、IF部5、バス6、メモリ7を備える。プロセッサ4、IF部5、メモリ7は、バス6を介して接続されている。
<プロセッサ4>
プロセッサ4は、デバッグ部13から受ける制御によって、ホストコンピュータ1から送られてきた実行形式プログラム16を読み出して、デバッグ実行を行う。そして、プロセッサ4がブレーク命令を読み出して割り込み処理を実行し、デバッグ実行を中断すると、デバッグ部13は、その時点におけるプロセッサ4のレジスタに保持されている値や、メモリ7に記憶されているデータを評価用ボード3から読み出して、読み出した情報を入出力装置14を通じてユーザに通知する処理を行う。
プロセッサ4の基本的な構成は、命令セットに条件付命令が含まれるRISC型プロセッサの代表格であるARM(Advanced RISC Machines)プロセッサと同等である。
以下に、プロセッサ4の命令フォーマットと、条件付ブレーク命令フォーマットについて説明する。
<命令フォーマット>
図3は、プロセッサ4の32bit命令フォーマットを示す図である。
同図に示すビット番号31〜28の4bitは、実行条件を示すフィールドであり、ビット番号27〜0の28bitは、命令を示すフィールドである。「cond」は、実行条件を示し、「xxx」は、0と1のどちらの値もとり得ることを示している。例えば、「cond」が「0001」であれば、実行条件は「ZERO」であることを示す。実行条件「ZERO」は、「最後に実行された演算結果が0の場合、実行する」という意味である。また、「cond」が、「1110」の場合、実行条件が無条件であることを示す。
同図から明らかなように、従来のブレーク命令には実行条件を指定するcondが存在せず、実行条件を指定できないことは自明である。
図4は、プロセッサ4の条件付ブレーク命令のフォーマットを示す図である。
また、ARMプロセッサは、16bitのThumbコードと呼ばれる拡張命令セットを備えており、プロセッサ4も同様に16bitの拡張命令セットを備えている。
同図に示すビット番号11〜8の4bitは、実行条件を示すフィールドであり、ビット番号15〜12の4bitと、ビット番号7〜0の8bitは、命令を示すフィールドである。「cond」は、実行条件を示し、「xxx」は、0と1のどちらの値もとり得ることを示している。
ここで参考までに、ARMプロセッサのThumbコードにおけるブレーク命令のフォーマットを図24に示す。
図6は、プロセッサ4の16bit拡張命令に対応する条件付ブレーク命令のフォーマットを示す図である。
プロセッサ4の16bit拡張命令に対応する条件付ブレーク命令のフォーマットは、実行条件指定手段として同図の「cond」として示されるフィールドを備え、ここに実行条件が記述される。また、ビット番号15〜12及び7〜0は、全て1であり、ブレーク命令であることを示す。
<実行条件>
プロセッサ4の命令セットアーキテクチャーにおいて、条件付命令が指定することができる実行条件は、「ZERO」、「NZERO」、「CARRY」、「NCARRY」、「OVER」、「NOVER」の6つがある。
「CARRY」は、「最後に実行された演算結果にキャリーが生じた場合、実行する」という意味の実行条件である。
「NCARRY」は、「CARRY」の反対条件である。
「NOVER」は、「OVER」の反対条件である。
図22は、各実行条件の反対条件を示した表である。
プロセッサ4は、各実行条件が成立しているか否かを示すステータスフラグレジスタを備えており、条件付命令が命令を読み出した際に、その実行条件と対応するステータスフラグレジスタにフラグが立ったかどうかで、実行条件が成立しているかどうかを評価する。
<パイプライン処理>
図7は、プロセッサ4のパイプライン処理の動作を説明するために用いるパイプライン構造を示す図である。
DCステージ72は、デコードした命令が条件付命令である場合、その条件付命令の実行条件が成立しているか否かをステータスフラグの値から評価する。
一方、評価した結果、その実行条件が満たされていなければ、EXステージ73は、デコードされた条件付命令を実行しない。
DCステージ72が例外を登録した場合、IFステージ71に対して、命令バッファにフェッチした命令を消去(フラッシュ)するために、制御信号78を発する。
<デバッグ部13>
ここで、デバッグ部13が備える各処理部について説明する。
デバッグ部13は、入出力処理部801、実行形式プログラム・デバッグ情報読み込み処理部802、命令参照・変更処理部803、実行・停止処理部804、デバッグ情報検索処理部805、ブレークポイント設定処理部806を備える。
入出力処理部801は、ユーザからの入力指示受付や、モニタに表示すべき情報の出力処理を行う。
命令参照・変更処理部803は、入出力処理部801で受け付けたユーザからの入力指示に基づいて、実行形式プログラム・デバッグ情報読み込み処理部802で読み込んだ実行形式プログラム16とデバッグ情報17から所望の命令を参照し、或いは所望の命令を変更する処理を行う。
デバッグ情報検索処理部805は、入出力処理部801で受け付けたユーザからの入力指示に基づいて、又は自動的に、デバッグ情報17から所望の命令の検索を行う。
<動作>
ここで、ブレークポイント設定処理部806が行うブレークポイントの設定処理について説明する。
<ブレークポイント設定処理>
図12は、ブレークポイント設定処理の動作フローを示す図である。
次に、ブレークポイント設定処理部806は、ブレークポイントに決定された位置(アドレス)とその位置の命令を保存する(ステップS2)。
そして、ブレークポイントに決定された位置の命令が条件付命令である場合(ステップS3:YES)、ブレークポイント設定処理部806は、その条件付命令の実行条件を実行条件とする条件付ブレーク命令に書き換える(ステップS4)。
図13は、上述のステップS4及びステップS5で行われるブレークポイントに決定された位置の命令をブレーク命令に書き換えるブレーク命令書換処理を示す図である。
32bit命令であれば(ステップS11:YES)、ブレークポイント設定処理部806は、32bit命令用のマスクとブレーク命令パターンを選択し(ステップS12)、命令を32bit命令用のマスクでマスクし(ステップS14)、マスクした結果とブレーク命令パターンとの論理和を行って、ブレーク命令に書き換える(ステップS15)。
32bit命令用のマスクは、図3に示す32bit命令フォーマットを用いて説明すると、ビット番号31〜28の4bitが全て1で、ビット番号27〜0までの28bitが全て0である。
一方、16bit命令用のマスクは、図5に示す16bit命令フォーマットを用いて説明すると、ビット番号11〜8の4bitが全て1で、他のビット番号は全て0である。
ブレークポイントに決定された位置の命令が32bit命令の場合、ブレークポイント設定処理部806は、当該命令と上述の32bit用のマスクとの論理積を取ってマスクすることで、ビット番号31〜28の実行条件を示す4bitはそのままで、ビット番号27〜0までの28bitを全て0にする。
一方、ブレークポイントに決定された位置の命令が16bit命令の場合、ブレークポイント設定処理部806は、当該命令と上述の16bit用のマスクとの論理積を取ってマスクすることで、ビット番号11〜8の実行条件を示す4bitはそのままで、他のビット番号のbitを全て0にすることができる。
<ブレークポイント設定処理の具体例1>
次に、条件付命令の位置がブレークポイントに決定された場合の、ブレークポイント設定処理の具体例について説明する。
一方、図10に示す表には、命令のアドレスと、命令の実行条件と、ニーモニックで表現された命令が記述されている。この表に示されるニーモニックの意味は、「レジスタR1に1を格納する(アドレス0x80000000)。次の命令のアドレスをスタックに退避し、関数subに分岐する(アドレス0x80000004)。関数subの結果が0であれば、レジスタR1に格納されている値に2を足したものをレジスタR1に格納する(アドレス0x80000008)。関数subの結果が0でなければ、レジスタR1の値を、スタックポインタの値に0x10を足した値が示すアドレスのメモリに書き込む(アドレス0x8000000C)。」である。
図10に示す表において、実行条件「ZERO」は、直前のCALL命令で呼び出される関数subの結果が0であれば、ADD命令を実行するという実行条件を示す。
図10に示す表において、アドレス0x80000008の位置、すなわち実行条件[ZERO]を指定する条件付命令の位置を、ブレークポイントとした場合、ブレークポイント設定処理部806は、図11に示すように、アドレス0x80000008の実行条件「ZERO」は、そのままで、加算命令「ADD R1,2」を、ブレーク命令を示す「BRK」に書き換える。
<プロセッサ4の動作>
ここで、プロセッサ4のデバッグ実行における割り込み発生処理について説明する。
まず、プロセッサ4は、デバッグ実行中に、デコードした命令が条件付ブレーク命令である場合(ステップS21:YES)、その条件付ブレーク命令の実行条件の成立状態を示すステータスフラグを確認し(ステップS22)、その結果、実行条件が成立していれば(ステップS23:YES)、例外登録をして、命令バッファに記憶された命令をフラッシュし、割り込み処理を実行する(ステップS24)。
以上説明したように、命令セットに条件付命令の実行条件を、実行条件として指定できる条件付ブレーク命令が含まれているプロセッサ4に、ソフトウェアブレーク手法で条件付命令を条件付ブレーク命令に書き換えた実行形式プログラムをデバッグ実行させると、プロセッサ4は、条件付ブレーク命令をデコードした際に、デバッグ装置等の外部の介在無しで、その条件付ブレーク命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定する。
なお、本発明は上述の内容に限定されないのは勿論である。以下の内容も本発明に含まれる。
<予測可否判定処理>
デバッグ部13は、条件付命令の位置をブレークポイントに決定した場合、その条件付命令の実行条件が、デバッグ実行中に成立するかどうかを予測する処理を行うようにしてもよい。そして、予測不可能であれば、その旨をユーザに通知するようにしてもよい。
まず、デバッグ情報検索処理部805は、ブレークポイントとすべき位置の条件付命令の、実行条件の状態変化を示すステータスフラグを0にする(ステップS31)。
そうでなければ(ステップS32:NO)、デバッグ情報検索処理部805は、その命令が他の実行条件を指定する条件付命令(以下、「第2条件付命令」と言う。)であるか否かを判定する(ステップS33)。
第2条件付命令の実行条件のステータスフラグが1であれば(ステップS39:YES)、続いて、デバッグ情報検索処理部805は、第2条件付命令が分岐命令であるかどうかを確認する(ステップS40)。
入出力処理部801は、ブレークポイント設定処理部806の予測不可能という判定に基づき、その旨をユーザに通知する出力処理を行う。
確認した結果、条件生成命令であれば(ステップS34:YES)、デバッグ情報検索処理部805は、その条件生成命令により影響を受ける実行条件のステータスフラグを1にして(ステップS36)、検索位置を次の命令に移す(ステップS38)。
ステップS35において、検索位置の命令が分岐命令でなければ(ステップS35:NO)、デバッグ情報検索処理部805は、検索位置を次の命令に移す(ステップS38)。
<検索処理1>
上述の予測可否判定処理のステップS41で、デバッグ情報検索処理部805が、ブレークポイントとすべき位置の、条件付命令の実行条件成立の予測は不可能と判定した場合、ブレークポイントとすべき位置の条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件を実行条件とする第2条件付命令及び実行条件を持たない無条件命令のうち、その条件付命令に最も近い位置にある命令を検出して、ブレークポイントとすべき位置の条件付命令と共に、その検出された命令の位置を予備のブレークポイントとするようにしてもよい。
デバッグ情報検索処理部805は、ステップS41において、ブレークポイントとすべき位置の条件付命令の、実行条件成立の予測が不可能と判定した場合、指定された条件付命令に後続する次の命令を検索する(ステップS45)。
検索位置の命令が、ブレークポイントとすべき指定された条件付命令の実行条件とは異なる実行条件を実行条件とする条件付命令である場合(ステップS46:YES)、デバッグ情報検索処理部805は、ステップS49に進む。
その結果、実行条件を持たない無条件命令である場合(ステップS47:YES)、デバッグ情報検索処理部805は、ステップS49に進み、そうでない場合(ステップS47:NO)は、次の命令を検索し(ステップS48)、ステップS46の処理に戻る。
<検索処理2>
サブルーチンをデバッグ実行する場合に、そのサブルーチンに含まれる条件付命令の位置をブレークポイントに決定した場合、上述の予測可否判定処理を行う代わりに、以下に説明する検索処理を行って、予備のブレークポイントを1以上決定するようにしてもよい。
まず、デバッグ情報検索処理部805は、図21に示す条件検索表210に示す各実行条件のステータスフラグを0にして、検索を開始する。
検索位置がサブルーチンの終了位置である場合(ステップS51:YES)、ステップS59に進む。
検索位置の命令が条件付命令であり(ステップS52:YES)、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一である場合(ステップS53:YES)、デバッグ情報検索処理部805は、検索位置を次の命令に移す(ステップS57)。
ステップS53において、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一ではなく(ステップS53:NO)、反対条件でない場合(ステップS54:NO)、デバッグ情報検索処理部805は、該当条件のステータスフラグを1にする(ステップS58)。その後、条件検索表210の全てのステータスフラグが1になった場合(ステップS56:YES)、検索を終了する。
ステップS56において、デバッグ情報検索処理部805は、サブルーチンの終了位置、無条件命令の位置、検索済み実行条件の反対条件の条件付命令位置をブレークポイントの候補位置として登録し(ステップS59)、検索処理を終了する。
<ブレークポイント設定処理の具体例2>
ここで、あるサブルーチンをデバッグ実行する際に、そのサブルーチン内に含まれる条件付命令の位置をブレークポイントとし、サブルーチン内で必ずデバッグ実行を停止させるブレークポイント設定処理の具体例について説明する。
図15に示すソースプログラム15に含まれるサブルーチンの一部は、図16に示す実行形式プログラム16の一部と対応している。
一方、図16に示す表には、命令のアドレスと、命令の実行条件と、ニーモニックで表現された命令が記述されている。
<補足>
(1)本発明は、上述のブレークポイント設定処理を行うデバッグ装置としてもよいし、デバッガとしてもよいし、ブレークポイント設定方法としてもよい。
(2)上述の実施の形態では、RISC型プロセッサについて説明したが、CISC(Complex Instruction Set Computer)型プロセッサに本発明を適用してもよい。
(3)プロセッサ4は、評価用ボード3に搭載されているとしたが、ホストコンピュータ1内に備わっていてもよい。また、プロセッサ4の代わりにプロセッサ4を再現するエミュレータが評価用ボード3及びホストコンピュータ1内に備わっていて、そのエミュレータがデバッグ対象の実行形式プログラムをデバッグ実行してもよい。また、プロセッサ4の代わりにプロセッサ4の動作を再現するシミュレータがホストコンピュータ1内にプログラムとして備わっていてもよい。また、評価ボードの代わりに、プロセッサ4の動作を再現するシミュレータプログラムを備えるシステムであってもよい。
(4)上記実施の形態では、プロセッサ4の命令フォーマットは、32bitと16bit命令の2種類としたが、1種類或いは3種類以上あってもよいし、命令フォーマット自体も、実行条件を示すcondの位置を限定して説明したが、その位置以外の位置で実行条件を指定する命令フォーマットであってもよい。
(5)異なる命令長の命令を自由に実行することが可能なプロセッサに本発明を適用する場合、実行条件を有する最小の命令長(本発明の実施の形態で言えば16bit)のブレーク命令を用意し、それをもってより長い命令長のブレーク命令を代替するものとしてもよい。
(6)上述の実施の形態では、説明を簡単にするため、命令フォーマットの一部のビットが実行条件を示すとしている。しかし、本発明の本質は、ブレーク命令に置き換えられてる命令の実行条件と、ブレーク命令の実行条件とを同じにすることである。例えば、実行条件を示すビットが命令フォーマットの特定位置にない場合でも、その実行条件を特定することができればよい。また、ブレーク命令に置き換えられる命令の実行条件が容易に識別可能で、ブレーク命令に同じ実行条件を設定することができればよい。
2 接続ケーブル
3 評価用ボード
4 プロセッサ
5、18 IF部
6 バス
7 メモリ
11 プログラム変換部
12 記憶部
13 デバッグ部
14 入出力装置
15 ソースプログラム
16 実行形式プログラム
17 デバッグ情報
Claims (9)
- 条件付命令セットを含み、記憶装置に記憶された命令を実行する命令実行装置であって、
命令実行結果である値を記憶する記憶部と、
実行条件フィールドを備える条件付命令を実行し、さらに、命令実行を中断する機能を有し、前記条件付命令と同一のフォーマットである実行条件フィールドを備える条件付デバッグ命令を実行する実行部と、
前記条件付デバッグ命令の実行条件フィールドを参照することによって、前記記憶部に記憶されている値を使用する条件式を識別する識別部と、
前記記憶部に記憶されている値を参照することにより、前記識別部により識別された条件式が真であるか偽であるかを判定する判定部と、
前記条件式が偽であると判定された場合に、前記実行部における前記条件付デバッグ命令の実行を抑止する実行制御部とを備える
ことを特徴とする命令実行装置。 - 前記条件付デバッグ命令の命令長は、前記命令実行装置の命令セットに含まれる命令のうち、命令長が最も短い命令の命令長以下であることを特徴とする請求項1に記載の命令実行装置。
- 請求項1に記載の命令実行装置が解読して実行することが可能なプログラムにコンピュータがブレークポイントを設定するデバッグ方法であって、
コンピュータが、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定している条件付デバッグ命令に書き換えることを特徴とするデバッグ方法。 - コンピュータが、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令の実行結果により、前記条件付命令の実行条件に状態変化があるかを確認することによって、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、
予測不可能と判定された場合に、その旨をユーザに通知する
ことを特徴とする請求項3に記載のデバッグ方法。 - コンピュータが、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令の実行結果により、前記条件付命令の実行条件に状態変化があるかを確認することによって、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、
予測不可能と判定された場合に、前記条件付命令より後に位置し、前記条件付命令の実行条件とは異なる実行条件の第2条件付命令及び実行条件を持たない無条件命令のうち、前記条件付命令に最も近い位置にある命令を検出し、
検出された命令の位置をブレークポイントに決定する
ことを特徴とする請求項4に記載のデバッグ方法。 - コンピュータが、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件の第2条件付命令及び実行条件を持たない無条件命令を少なくとも1つ検出するために検索を繰り返し、
その結果検出された命令の位置をブレークポイントに決定する
ことを特徴とする請求項3に記載のデバッグ方法。 - コンピュータが、
ブレークポイントに決定された位置の命令がサブルーチンに含まれる条件付命令である場合、
前記検索における検索位置が、前記サブルーチンの終了位置に到達したか否かを判定し、
前記判定において、検索位置が前記サブルーチンの終了位置に到達したと判定された場合、前記検索を終了する
ことを特徴とする請求項6に記載のデバッグ方法。 - 請求項1に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ装置であって、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定している条件付デバッグ命令に書き換える書換手段を備える
ことを特徴とするデバッグ装置。 - 請求項1記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグプログラムであって、
コンピュータに、
ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定している条件付デバッグ命令に書き換える書換ステップを実行させる
ことを特徴とするデバッグプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005155902A JP4718901B2 (ja) | 2005-05-27 | 2005-05-27 | 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム |
US11/440,253 US7620802B2 (en) | 2005-05-27 | 2006-05-25 | Instruction execution device, debugging method, debugging device, and debugging program |
CNA2006100784211A CN1869952A (zh) | 2005-05-27 | 2006-05-26 | 指令执行设备、调试方法、调试设备以及调试程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005155902A JP4718901B2 (ja) | 2005-05-27 | 2005-05-27 | 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006331201A JP2006331201A (ja) | 2006-12-07 |
JP4718901B2 true JP4718901B2 (ja) | 2011-07-06 |
Family
ID=37443620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005155902A Active JP4718901B2 (ja) | 2005-05-27 | 2005-05-27 | 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US7620802B2 (ja) |
JP (1) | JP4718901B2 (ja) |
CN (1) | CN1869952A (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW588238B (en) * | 2003-02-13 | 2004-05-21 | Micro Star Int Co Ltd | Program debugging method |
CN101295279B (zh) * | 2007-04-29 | 2012-05-09 | 国际商业机器公司 | 多线程环境下的调试程序的方法和系统 |
US8261047B2 (en) * | 2008-03-17 | 2012-09-04 | Freescale Semiconductor, Inc. | Qualification of conditional debug instructions based on address |
CN102096629B (zh) * | 2009-12-14 | 2013-09-25 | 华为技术有限公司 | 经过性断点设置、调试方法和装置 |
US8719797B2 (en) * | 2010-05-18 | 2014-05-06 | Blackberry Limited | System and method for debugging dynamically generated code of an application |
CN102063370B (zh) * | 2010-12-17 | 2013-10-16 | 北京控制工程研究所 | 一种从总线指令流中提取实际执行指令和预取指令的方法 |
US20130247007A1 (en) * | 2012-03-16 | 2013-09-19 | International Business Machines Corporation | Making debugger behavior conditional on past program state |
US9170920B2 (en) | 2013-03-26 | 2015-10-27 | International Business Machines Corporation | Identifying and tagging breakpoint instructions for facilitation of software debug |
CN106452807B (zh) * | 2015-08-04 | 2020-12-29 | 深圳市中兴微电子技术有限公司 | 一种网络处理器及报文处理数据的获取方法 |
US9747189B2 (en) | 2015-11-12 | 2017-08-29 | International Business Machines Corporation | Breakpoint for predicted tuple processing time in a streaming environment |
CN105550109A (zh) * | 2015-12-11 | 2016-05-04 | 四川长虹电器股份有限公司 | 一种设备调试方法及电子设备 |
CN106250260B (zh) * | 2016-08-03 | 2019-07-23 | 北京小米移动软件有限公司 | 处理器溢出监控和调试方法及装置 |
JP6351906B1 (ja) * | 2017-06-27 | 2018-07-04 | 三菱電機株式会社 | デバッグ装置 |
CN113485748B (zh) * | 2021-05-31 | 2022-08-12 | 上海卫星工程研究所 | 卫星条件指令系统及其执行方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62263540A (ja) * | 1986-05-10 | 1987-11-16 | Nec Corp | 分岐予測検証方式 |
JPH05334126A (ja) * | 1992-06-01 | 1993-12-17 | Toshiba Corp | 情報処理装置 |
JPH07200352A (ja) * | 1993-12-28 | 1995-08-04 | Hitachi Ltd | データプロセッサ、プログラム翻訳方法、及びデバッグツール |
JPH0877037A (ja) * | 1994-09-01 | 1996-03-22 | Toshiba Corp | ジャミング装置 |
JPH08510342A (ja) * | 1993-05-12 | 1996-10-29 | シーメンス アクチエンゲゼルシヤフト | プログラムシステムのシーケンスの機械的な監視方法 |
JPH09325901A (ja) * | 1996-03-15 | 1997-12-16 | Hewlett Packard Co <Hp> | デバッギングを実施する方法 |
JP2000259408A (ja) * | 1999-03-08 | 2000-09-22 | Texas Instr Inc <Ti> | 遅延スロットにおけるソフトウェアブレークポイント |
JP2000353110A (ja) * | 1999-04-23 | 2000-12-19 | Sun Microsyst Inc | 最適化コードのデバッギング方法及び装置 |
JP2001154877A (ja) * | 1999-11-30 | 2001-06-08 | Fujitsu Ltd | 割込制御装置および方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361354A (en) * | 1991-12-17 | 1994-11-01 | Cray Research, Inc. | Optimization of alternate loop exits |
US5771385A (en) * | 1996-03-29 | 1998-06-23 | Sun Microsystems, Inc. | Setting and getting system debug flags by name at runtime |
US6681280B1 (en) * | 1998-10-29 | 2004-01-20 | Fujitsu Limited | Interrupt control apparatus and method separately holding respective operation information of a processor preceding a normal or a break interrupt |
US6922826B2 (en) * | 2001-07-03 | 2005-07-26 | International Business Machines Corporation | Debugger impact reduction through breakpoint motion |
JP2003050716A (ja) | 2001-08-06 | 2003-02-21 | Matsushita Electric Ind Co Ltd | ソフトウエアデバッガとソフトウエア開発支援システム |
US6981248B2 (en) | 2002-05-02 | 2005-12-27 | International Business Machines Corporation | Conditional breakpoint encountered indication |
JP2005063429A (ja) * | 2003-07-30 | 2005-03-10 | Matsushita Electric Ind Co Ltd | プログラムデバッグ装置、プログラムデバッグ方法及びプログラム |
JP2005267445A (ja) | 2004-03-19 | 2005-09-29 | Fujitsu Ltd | デバッグシステム |
-
2005
- 2005-05-27 JP JP2005155902A patent/JP4718901B2/ja active Active
-
2006
- 2006-05-25 US US11/440,253 patent/US7620802B2/en active Active
- 2006-05-26 CN CNA2006100784211A patent/CN1869952A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62263540A (ja) * | 1986-05-10 | 1987-11-16 | Nec Corp | 分岐予測検証方式 |
JPH05334126A (ja) * | 1992-06-01 | 1993-12-17 | Toshiba Corp | 情報処理装置 |
JPH08510342A (ja) * | 1993-05-12 | 1996-10-29 | シーメンス アクチエンゲゼルシヤフト | プログラムシステムのシーケンスの機械的な監視方法 |
JPH07200352A (ja) * | 1993-12-28 | 1995-08-04 | Hitachi Ltd | データプロセッサ、プログラム翻訳方法、及びデバッグツール |
JPH0877037A (ja) * | 1994-09-01 | 1996-03-22 | Toshiba Corp | ジャミング装置 |
JPH09325901A (ja) * | 1996-03-15 | 1997-12-16 | Hewlett Packard Co <Hp> | デバッギングを実施する方法 |
JP2000259408A (ja) * | 1999-03-08 | 2000-09-22 | Texas Instr Inc <Ti> | 遅延スロットにおけるソフトウェアブレークポイント |
JP2000353110A (ja) * | 1999-04-23 | 2000-12-19 | Sun Microsyst Inc | 最適化コードのデバッギング方法及び装置 |
JP2001154877A (ja) * | 1999-11-30 | 2001-06-08 | Fujitsu Ltd | 割込制御装置および方法 |
Also Published As
Publication number | Publication date |
---|---|
US7620802B2 (en) | 2009-11-17 |
JP2006331201A (ja) | 2006-12-07 |
CN1869952A (zh) | 2006-11-29 |
US20070006158A1 (en) | 2007-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7620802B2 (en) | Instruction execution device, debugging method, debugging device, and debugging program | |
JP6267513B2 (ja) | 同一のデータ条件に依存する、隣接する命令の実行の制御 | |
CN102792265B (zh) | 基于机器状态的指令破解 | |
JP6807383B2 (ja) | 転送プレフィックス命令 | |
RU2417407C2 (ru) | Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы | |
JPH1021074A (ja) | 割り込み制御方式、プロセッサ及び計算機システム | |
US5996059A (en) | System for monitoring an execution pipeline utilizing an address pipeline in parallel with the execution pipeline | |
JP2007058731A (ja) | プロセッサ、及び並列命令実行対応デバッグ装置 | |
US5212779A (en) | System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction | |
JP4159586B2 (ja) | 情報処理装置および情報処理の高速化方法 | |
CN109144572B (zh) | 指令执行方法和处理器 | |
CN111124499A (zh) | 一种兼容多指令系统的处理器及其运行方法 | |
JP3892873B2 (ja) | プログラマブルコントローラ | |
JP2004206699A (ja) | シミュレーション装置、シミュレーション方法及びプログラム | |
JP2011216056A (ja) | プログラマブルコントローラ及びその周辺装置 | |
JP3716635B2 (ja) | 情報処理装置、及びその割込み制御方法 | |
JP2005149297A (ja) | プロセッサおよびそのアセンブラ | |
JP5013966B2 (ja) | 演算処理装置 | |
JPH1165881A (ja) | Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ | |
CN117707919A (zh) | 一种面向申威平台的协程调试方法 | |
JP3130421B2 (ja) | プログラム解析方法および装置 | |
US20090119492A1 (en) | Data Processing Apparatus and Method for Handling Procedure Call Instructions | |
JPH0736510A (ja) | プログラマブルコントローラ | |
JP4479738B2 (ja) | プログラマブルコントローラ | |
CN119759423A (zh) | 指令处理方法、装置、处理器、介质、程序及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080514 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110107 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110401 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4718901 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140408 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |