[go: up one dir, main page]

JP4718901B2 - 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム - Google Patents

命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム Download PDF

Info

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
Application number
JP2005155902A
Other languages
English (en)
Other versions
JP2006331201A (ja
Inventor
顯 宅間
耕作 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2005155902A priority Critical patent/JP4718901B2/ja
Priority to US11/440,253 priority patent/US7620802B2/en
Priority to CNA2006100784211A priority patent/CN1869952A/zh
Publication of JP2006331201A publication Critical patent/JP2006331201A/ja
Application granted granted Critical
Publication of JP4718901B2 publication Critical patent/JP4718901B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3648Debugging 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には、プロセッサがデバッグ命令を実行し、デバッグ割込みが発生したい際に、デバッグ装置により、ブレーク命令に書き換えられる前の条件付命令の実行条件が成立しているか否かを判定し、実行条件が成立していない場合はプログラムを再開する割込制御方法が開示されている。
但し、ソフトウェアブレーク手法で条件付命令にブレークポイントが設定されたプログラムを、特許文献1に開示されている割込制御方法を用いて実行する場合、プロセッサがブレーク命令を実行することで割り込みを発生させ、デバッグ装置が書き換えられた元の条件付命令の実行条件をデコードして、実行条件が成立しているか否かの確認を行う。
特願平11−341077号公報
ところで、プログラムの開発現場では、デバッグ作業にかかる時間をできるだけ短縮して、作業効率を高めたいという要望があり、上述の割込制御方法より、デバッグ実行時間を短縮することが求められている。
そこで、本発明は、ソフトウェアブレーク手法で条件付命令にブレークポイントが設定された実行形式プログラムのデバッグ実行において、デバッグ装置の介在を無しにすることでデバッグ実行時間を短縮しつつ、その条件付命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定することができる命令実行装置、そして、条件付命令を含むプログラムをデバッグ対象として、当該プログラムにブレークポイントを設定するデバッグ方法、デバッグ装置及びデバッグプログラムを提供することを目的とする。
前記目的を達成するために、本発明に係る命令実行装置は、記憶装置に記憶された命令を実行する命令実行装置であって、自装置の命令実行結果である値を記憶する記憶部と、自装置の命令実行を中断するデバッグ命令を実行する実行部と、前記デバッグ命令を構成するビット列から、前記記憶部に記憶されている値をオペランドとして使用する条件式を識別する識別部と、前記記憶部に記憶されている値を参照することにより、前記識別部により識別された条件式が真であるか偽であるかを判定する判定部と、前記条件式が偽であると判定された場合に、前記実行部における前記デバッグ命令の実行を抑止する実行制御部とを備えることを特徴とする。
ここで、命令実行装置とは、プロセッサ、当該プロセッサを再現したエミュレータ、当該プロセッサの動作を再現するシミュレータ等である。
また、本発明に係るデバッグ方法は、請求項1に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ方法であって、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換えることを特徴とする。
また、本発明に係るデバッグ装置は、請求項1に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ装置であって、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換える書換手段を備えることを特徴とする。
また、本発明に係るデバッグプログラムは、請求項1記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグプログラムであって、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定しているデバッグ命令に書き換える書換ステップを含むことを特徴とする。
前記構成の命令実行装置は、デバッグ装置等の外部の介在無しで、そのデバッグ命令の実行条件式が真であるか偽であるかに応じて、自装置の命令実行を中断するか否かを決定する。
よって、従来の割り込み制御方法に比べて、デバッグ実行に費やされる時間を短縮することができ、デバッグ作業の効率を高めることができる。
また、前記デバッグ方法及びデバッグ装置は、ブレークポイントに決定された位置の条件付命令を、その条件付命令の実行条件を実行条件とするデバッグ命令に書き換えることを行う。そして、その書き換えが行われたプログラムを上述の構成の命令実行装置にデバッグ実行させると、当該命令実行装置は、デバッグ命令をデコードした際に、デバッグ装置等の外部の介在無しで、そのデバッグ命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定する。
よって、従来の割り込み制御方法に比べて、デバッグ実行に費やされる時間を短縮することができ、デバッグ作業の効率を高めることができる。
また、前記デバッグプログラムを用いて、プログラムにブレークポイントを設定する場合においても、前記デバッグ方法及びデバッグ装置と同様の効果を得ることができる。
また、前記デバッグ命令の命令長は、前記命令実行装置の命令セットに含まれる命令のうち、命令長が最も短い命令の命令長以下であるとしてもよい。
これにより、ソフトウェアブレーク手法でブレークポイントを設定した際に、書き換え対象命令以外の命令を、誤って上書きするという問題が発生することを防ぐことができる。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、予測不可能と判定された場合に、その旨をユーザに通知するとしてもよい。
これにより、ブレークポイントとすべき条件付命令の実行条件が成立するかどうかの予測ができないと判定した場合、予測できない旨をユーザに通知するので、ユーザはその通知を考慮して、ブレークポイントの再設定等を行うことができる。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令に基づいて、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、予測不可能と判定された場合に、前記条件付命令より後に位置し、前記条件付命令の実行条件とは異なる実行条件の第2条件付命令及び実行条件を持たない無条件命令のうち、前記条件付命令に最も近い位置にある命令を検出し、検出された命令の位置をブレークポイントに決定するとしてもよい。
このデバッグ方法を用いれば、検出された命令の位置と前記条件付命令の位置をブレークポイントに決定するので、2つのブレークポイントをプログラムに設定することになる。
これにより、2つのブレークポイントが設定されたプログラムのデバッグ実行において、先のブレークポイントである条件付命令の位置でデバッグ実行が停止しなくても、次のブレークポイントである、前記条件付命令に近い位置にある命令の位置でデバッグ実行の停止を図ることができる。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件の第2条件付命令及び実行条件を持たない無条件命令を少なくとも1つ検出するために検索を繰り返し、その結果検出された命令の位置をブレークポイントに決定するとしてもよい。
このデバッグ方法を用いれば、前記条件付命令の位置と、検出された少なくとも1つの命令の位置とをそれぞれブレークポイントに決定するので、少なくとも2つ以上のブレークポイントをプログラムに設定することになる。
これにより、ブレークポイントが設定されたプログラムのデバッグ実行において、先のブレークポイントである条件付命令の位置でデバッグ実行が停止しなくても、次のブレークポイント又はその次のブレークポイントでデバッグ実行の停止を図ることができる。
また、前記デバッグ方法において、ブレークポイントに決定された位置の命令がサブルーチンに含まれる条件付命令である場合、前記検索における検索位置が、前記サブルーチンの終了位置に到達したか否かを判定し、前記判定において、検索位置が前記サブルーチンの終了位置に到達したと判定された場合、前記検索を終了するとしてもよい。
このデバッグ方法を用いれば、サブルーチンに含まれる条件付命令の位置をブレークポイントとし、その条件付命令以外の命令の位置にブレークポイントを設定する場合に、サブルーチンの境界を超えない範囲でブレークポイントとすべき命令位置の検索を行うようにすることができる。
また、前記デバッグ方法の前記検索において、前記条件付命令の実行条件の反対条件を実行条件として指定している第2条件付命令が検出されたか否かを判定し、前記判定により、前記第2条件付命令が検出されたと判定された場合、前記検索を終了するとしてもよい。
このデバッグ方法を用いれば、ブレークポイントとすべき条件付命令の実行条件の反対条件を実行条件とする第2条件付命令の位置をブレークポイントに設定することで、確実にデバッグ実行を停止することができるので、第2条件付命令を検出することができれば、直ちに検索を中止するようにしている。
これにより、余分な検索処理を減らすことができる。
以下に本発明の実施の形態について、図面を用いて説明する。
<概要>
図1は、デバッグ支援システムを示す図である。
デバッグ支援システムは、ホストコンピュータ1、接続ケーブル2及び評価用ボード3から成る。
評価用ボード3には、デバッグ対象の実行形式プログラムを実行するプロセッサ4が搭載されている。
ホストコンピュータ1には、デバッガがインストールされており、デバッガは、ユーザの指示に応じて、又は自動的に、デバッグ対象である実行形式プログラムに、ソフトウェアブレーク手法でブレークポイントの設定を行う。
そのブレークポイントの設定において、実行形式プログラムに含まれている条件付命令の位置がブレークポイントに決定された場合、デバッガは、当該条件付命令を、当該条件付命令の実行条件を実行条件とする条件付ブレーク命令に書き換える処理を行う。
ユーザがデバッガに対してデバッグ実行を指示すると、デバッガは、ブレークポイントが設定された実行形式プログラムを、評価用ボード3に搭載されているプロセッサ4にデバッグ実行させる。
プロセッサ4は、実行形式プログラムのデバッグ実行中に、条件付ブレーク命令を読み出すと、条件付ブレーク命令の実行条件式が真であるか偽であるかに応じて、割込み処理を実行してデバッグ実行を中断する、又は割り込み処理を実行せずにデバッグ実行を続行する。
<構成>
ここで、ホストコンピュータ1及び評価用ボード3の構成について説明する。
図2は、図1に示したホストコンピュータ1の構成と、評価用ボード3の構成を示す図である。
<ホストコンピュータ1>
ホストコンピュータ1は、プログラム変換部11、記憶部12、デバッグ部13、入出力装置14、IF(Interface)部18を備える。
図示していないが、記憶部12には、各種制御プログラムが記憶されており、ホストコンピュータ1に備わるプロセッサ(図示せず)が、これらの制御プログラムを実行することにより、プログラム変換部11、デバッグ部13等の機能部と、入出力装置14に対する入力制御及び出力制御を実現する。
入出力装置14は、ユーザからの指示、及び外部メディアからのデータ入力を受け付ける入力機能と、ユーザへの情報の出力、及び外部メディアへの情報の出力を実現する出力機能とを実現する装置である。
図示していないが、入力機能は、キーボードやマウス、光ディスクドライブ等のハードウェアと上述の入力制御により実現しており、出力機能は、モニタやスピーカ、光ディスクドライブ等のハードウェアと出力制御により実現している。
プログラム変換部11は、ユーザの指示により、記憶部12に記憶されているソースプログラム15を実行形式プログラム16に変換する機能を有する。
また、プログラム変換部11は、ソースプログラム15を実行形式プログラム16に変換した際に、実行形式プログラム16をニーモニックで表現したデバッグ情報17を作成する。
プログラム変換により生成された実行形式プログラム16、及び作成されたデバッグ情報17は、記憶部12に記憶される。
デバッグ部13は、実行形式プログラム16のデバッグを支援するための様々なソフトウェア・ツールを実現する機能部であり、上述のデバッガに相当する。
デバッグ部13は、ユーザの指示により、記憶部12に記憶されているソースプログラム15、実行形式プログラム16及びデバッグ情報17を参照して、デバッグ対象の実行形式ログラム16にブレークポイントを設定する処理や、ブレークポイントが設定された実行形式プログラム16をプロセッサ4にデバッグ実行させる処理等、デバッグ支援に関する様々な処理を行う。
なお、デバッグ情報17は、ソースプログラム15と対応付けられており、ユーザは、ソースプログラム15に示される所望の行にブレークポイントを設定すると、デバッグ部13は、その所望の行に記載されている命令と対応する実行形式プログラム16の命令位置をブレークポイントに設定する。
デバッグ部13が有する各処理部の詳細については、後述する。
IF部18は、評価用ボード3とホストコンピュータ1とを接続する接続ケーブル2を介して送受信される信号の仲介を行う機能を有する。
<評価用ボード3>
評価用ボード3は、プロセッサ4、IF部5、バス6、メモリ7を備える。プロセッサ4、IF部5、メモリ7は、バス6を介して接続されている。
IF部5は、評価用ボード3とホストコンピュータ1とを接続する接続ケーブル2を介して送受信される信号の仲介を行う機能を有する。
<プロセッサ4>
プロセッサ4は、デバッグ部13から受ける制御によって、ホストコンピュータ1から送られてきた実行形式プログラム16を読み出して、デバッグ実行を行う。そして、プロセッサ4がブレーク命令を読み出して割り込み処理を実行し、デバッグ実行を中断すると、デバッグ部13は、その時点におけるプロセッサ4のレジスタに保持されている値や、メモリ7に記憶されているデータを評価用ボード3から読み出して、読み出した情報を入出力装置14を通じてユーザに通知する処理を行う。
プロセッサ4は、条件付命令を命令セットに含むRISC(Reduced Instruction Set Computer)型命令セットアーキテクチャーのプロセッサである。
プロセッサ4の基本的な構成は、命令セットに条件付命令が含まれるRISC型プロセッサの代表格であるARM(Advanced RISC Machines)プロセッサと同等である。
プロセッサ4が、従来のARMプロセッサと異なる点は、条件付命令の実行条件を実行条件とする条件付ブレーク命令が命令セットに含まれていて、デバッグ実行中に、その条件付ブレーク命令の実行条件が成立していれば、割り込み処理を実行する点である。
以下に、プロセッサ4の命令フォーマットと、条件付ブレーク命令フォーマットについて説明する。
<命令フォーマット>
図3は、プロセッサ4の32bit命令フォーマットを示す図である。
プロセッサ4の32bit命令フォーマットは、基本的には、ARMプロセッサで用いられている「ARMコード」と同じである。
同図に示すビット番号31〜28の4bitは、実行条件を示すフィールドであり、ビット番号27〜0の28bitは、命令を示すフィールドである。「cond」は、実行条件を示し、「xxx」は、0と1のどちらの値もとり得ることを示している。例えば、「cond」が「0001」であれば、実行条件は「ZERO」であることを示す。実行条件「ZERO」は、「最後に実行された演算結果が0の場合、実行する」という意味である。また、「cond」が、「1110」の場合、実行条件が無条件であることを示す。
ここで参考までに、ARMプロセッサのARMコードにおけるブレーク命令のフォーマットを図23に示す。
同図から明らかなように、従来のブレーク命令には実行条件を指定するcondが存在せず、実行条件を指定できないことは自明である。
図4は、プロセッサ4の条件付ブレーク命令のフォーマットを示す図である。
プロセッサ4の条件付ブレーク命令のフォーマットは、実行条件指定手段として同図の「cond」として示されるフィールドを備え、ここに実行条件が記述される。また、ビット番号27〜0の28bitは、全て1であり、ブレーク命令であることを示す。
また、ARMプロセッサは、16bitのThumbコードと呼ばれる拡張命令セットを備えており、プロセッサ4も同様に16bitの拡張命令セットを備えている。
図5は、プロセッサ4の拡張命令フォーマットを示す図である。
同図に示すビット番号11〜8の4bitは、実行条件を示すフィールドであり、ビット番号15〜12の4bitと、ビット番号7〜0の8bitは、命令を示すフィールドである。「cond」は、実行条件を示し、「xxx」は、0と1のどちらの値もとり得ることを示している。
ここで参考までに、ARMプロセッサのThumbコードにおけるブレーク命令のフォーマットを図24に示す。
同図から明らかなように、ブレーク命令は実行条件を指定するcondが存在せず、実行条件を指定できないことは自明である。
図6は、プロセッサ4の16bit拡張命令に対応する条件付ブレーク命令のフォーマットを示す図である。
プロセッサ4の16bit拡張命令に対応する条件付ブレーク命令のフォーマットは、実行条件指定手段として同図の「cond」として示されるフィールドを備え、ここに実行条件が記述される。また、ビット番号15〜12及び7〜0は、全て1であり、ブレーク命令であることを示す。
<実行条件>
プロセッサ4の命令セットアーキテクチャーにおいて、条件付命令が指定することができる実行条件は、「ZERO」、「NZERO」、「CARRY」、「NCARRY」、「OVER」、「NOVER」の6つがある。
「ZERO」は、上述したような意味の実行条件であり、「NZERO」は、「ZERO」の反対条件である。
「CARRY」は、「最後に実行された演算結果にキャリーが生じた場合、実行する」という意味の実行条件である。
「NCARRY」は、「CARRY」の反対条件である。
「OVER」は、最後に符号付きデータの算術演算を実行した結果、その演算結果に桁あふれが起きた場合、実行する」という意味の実行条件である。
「NOVER」は、「OVER」の反対条件である。
図22は、各実行条件の反対条件を示した表である。
プロセッサ4は、各実行条件が成立しているか否かを示すステータスフラグレジスタを備えており、条件付命令が命令を読み出した際に、その実行条件と対応するステータスフラグレジスタにフラグが立ったかどうかで、実行条件が成立しているかどうかを評価する。
<パイプライン処理>
図7は、プロセッサ4のパイプライン処理の動作を説明するために用いるパイプライン構造を示す図である。
プロセッサ4は、5段パイプライン構造であり、メモリ7から読み出した命令をプロセッサ4に備わる命令バッファ(図示せず)にフェッチするIF(Instruction Fetch)ステージ71と、命令バッファにフェッチされた命令をデコードするDC(Decode)ステージ72と、デコードされた命令を実行するEX(Execute)ステージ73と、レジスタやメモリにアクセスを行うMEM(Memory)ステージ74と、命令の実行結果をレジスタやメモリに書き込む(ライトバック)するWB(Write Back)ステージ75の5つのステージで構成される。
EXステージ73と、MEMステージ74と、WBステージ75は、各ステージにおいて任意の命令によりある実行条件に対応するステータスフラグの値が変化した場合、その値を通知信号77を介してDCステージ72に通知(フォワーディング)する。
DCステージ72は、デコードした命令が条件付命令である場合、その条件付命令の実行条件が成立しているか否かをステータスフラグの値から評価する。
評価した結果、その実行条件が成立しており、且つ、その条件付命令が条件付ブレーク命令である場合、DCステージ72は、割り込み処理の実行登録である例外登録を行う。
一方、評価した結果、その実行条件が満たされていなければ、EXステージ73は、デコードされた条件付命令を実行しない。
DCステージ72が例外を登録した場合、IFステージ71に対して、命令バッファにフェッチした命令を消去(フラッシュ)するために、制御信号78を発する。
DCステージ72で登録された例外は、WBステージ75で検出され、WBステージ75は、例外を検出すると、IFステージ71に割り込みベクタ信号71を発し、次に実行すべき命令のアドレスを通知して、割り込み処理を実行する。
<デバッグ部13>
ここで、デバッグ部13が備える各処理部について説明する。
図8は、デバッグ部13が備える各処理部を示す図である。
デバッグ部13は、入出力処理部801、実行形式プログラム・デバッグ情報読み込み処理部802、命令参照・変更処理部803、実行・停止処理部804、デバッグ情報検索処理部805、ブレークポイント設定処理部806を備える。
入出力処理部801は、ユーザからの入力指示受付や、モニタに表示すべき情報の出力処理を行う。
実行形式プログラム・デバッグ情報読み込み処理部802は、記憶部12から実行形式プログラム16とデバッグ情報17を読み込む処理を行う。
命令参照・変更処理部803は、入出力処理部801で受け付けたユーザからの入力指示に基づいて、実行形式プログラム・デバッグ情報読み込み処理部802で読み込んだ実行形式プログラム16とデバッグ情報17から所望の命令を参照し、或いは所望の命令を変更する処理を行う。
実行・停止処理部804は、入出力処理部801で受け付けたユーザからの入力指示に基づいて、又は、自動的にプロセッサ4にデバッグ実行させ、或いはデバッグ実行を停止させる処理を行う。
デバッグ情報検索処理部805は、入出力処理部801で受け付けたユーザからの入力指示に基づいて、又は自動的に、デバッグ情報17から所望の命令の検索を行う。
ブレークポイント設定処理部806は、入出力処理部801で受け付けたユーザからの入力指示に基づいて、又は自動的に、ある命令位置にブレークポイントの設定を行う。
<動作>
ここで、ブレークポイント設定処理部806が行うブレークポイントの設定処理について説明する。
<ブレークポイント設定処理>
図12は、ブレークポイント設定処理の動作フローを示す図である。
まず、ブレークポイント設定処理部806は、ブレークポイントの位置を決定する処理が行われる(ステップS1)。
次に、ブレークポイント設定処理部806は、ブレークポイントに決定された位置(アドレス)とその位置の命令を保存する(ステップS2)。
そして、ブレークポイントに決定された位置の命令が条件付命令である場合(ステップS3:YES)、ブレークポイント設定処理部806は、その条件付命令の実行条件を実行条件とする条件付ブレーク命令に書き換える(ステップS4)。
一方、ステップS3において、ブレークポイントに決定された位置の命令が条件付命令でない場合(ステップS3:NO)、その命令を、無条件ブレーク命令に書き換える(ステップS5)。
図13は、上述のステップS4及びステップS5で行われるブレークポイントに決定された位置の命令をブレーク命令に書き換えるブレーク命令書換処理を示す図である。
まず、ブレークポイント設定処理部806は、ブレークポイントに決定された位置の命令が、32bit命令であるかどうかを判定する(ステップS11)。
32bit命令であれば(ステップS11:YES)、ブレークポイント設定処理部806は、32bit命令用のマスクとブレーク命令パターンを選択し(ステップS12)、命令を32bit命令用のマスクでマスクし(ステップS14)、マスクした結果とブレーク命令パターンとの論理和を行って、ブレーク命令に書き換える(ステップS15)。
ステップS11において、対象命令が16bit命令であれば(ステップS11:NO)、ブレークポイント設定処理部806は、16bit命令用のマスクとブレーク命令パターンを選択し(ステップS13)、命令を16bit命令用のマスクでマスクし(ステップS14)、マスクした結果とブレーク命令パターンとの論理和を行って、ブレーク命令に書き換える(ステップS15)。
ここで、ブレークポイントに決定された位置の命令がどのようにして条件付又は無条件ブレーク命令に書き換えられるかについて、具体的に説明する。
32bit命令用のマスクは、図3に示す32bit命令フォーマットを用いて説明すると、ビット番号31〜28の4bitが全て1で、ビット番号27〜0までの28bitが全て0である。
また、32bit命令用のブレーク命令パターンは、ビット番号31〜28の4bitが全て0で、ビット番号27〜0までの28bitが全て1である。
一方、16bit命令用のマスクは、図5に示す16bit命令フォーマットを用いて説明すると、ビット番号11〜8の4bitが全て1で、他のビット番号は全て0である。
また、16bit命令用のブレーク命令パターンは、ビット番号11〜8の4bitが全て0で、他のビット番号は全て1である。
ブレークポイントに決定された位置の命令が32bit命令の場合、ブレークポイント設定処理部806は、当該命令と上述の32bit用のマスクとの論理積を取ってマスクすることで、ビット番号31〜28の実行条件を示す4bitはそのままで、ビット番号27〜0までの28bitを全て0にする。
そして、ブレークポイント設定処理部806は、マスクした結果と、ブレーク命令パターンとの論理和を行うことで、実行条件を示すビット番号31〜28の4bitはそのままで、ビット番号27〜0までの28bitが全て1のブレーク命令に書き換える。
一方、ブレークポイントに決定された位置の命令が16bit命令の場合、ブレークポイント設定処理部806は、当該命令と上述の16bit用のマスクとの論理積を取ってマスクすることで、ビット番号11〜8の実行条件を示す4bitはそのままで、他のビット番号のbitを全て0にすることができる。
そして、ブレークポイント設定処理部806は、マスクした結果と、ブレーク命令パターンとの論理和を行うことで、実行条件を示すビット番号11〜8の4bitは、そのままで、他のビット番号のbitが全て1のブレーク命令に書き換える。
<ブレークポイント設定処理の具体例1>
次に、条件付命令の位置がブレークポイントに決定された場合の、ブレークポイント設定処理の具体例について説明する。
図9は、ソースプログラム15の一部を表で示した図であり、図10は、ソースプログラム15を実行形式プログラム16に変換した際に作成される、実行形式プログラム16をニーモニックで表現したデバッグ情報17の一部を表で示した図である。図9に示すソースプログラム15の一部は、図10に示す実行形式プログラム16の一部と対応している。
図9に示す表には、ソースコードの行番号と、C言語で表現された実行文が記述されている。この表に示されるソースプログラムの意味は、「関数subに引数1を与えて呼び出し、戻り値を変数rに代入する(行番号10)。変数rの値が0であれば、変数rに2を足す(行番号11〜13)。」である。
一方、図10に示す表には、命令のアドレスと、命令の実行条件と、ニーモニックで表現された命令が記述されている。この表に示されるニーモニックの意味は、「レジスタR1に1を格納する(アドレス0x80000000)。次の命令のアドレスをスタックに退避し、関数subに分岐する(アドレス0x80000004)。関数subの結果が0であれば、レジスタR1に格納されている値に2を足したものをレジスタR1に格納する(アドレス0x80000008)。関数subの結果が0でなければ、レジスタR1の値を、スタックポインタの値に0x10を足した値が示すアドレスのメモリに書き込む(アドレス0x8000000C)。」である。
図10に示す表において、アドレス0x80000008のADD命令の実行条件として、「ZERO」が指定されている。
図10に示す表において、実行条件「ZERO」は、直前のCALL命令で呼び出される関数subの結果が0であれば、ADD命令を実行するという実行条件を示す。
図10に示す表において、アドレス0x80000008の位置、すなわち実行条件[ZERO]を指定する条件付命令の位置を、ブレークポイントとした場合、ブレークポイント設定処理部806は、図11に示すように、アドレス0x80000008の実行条件「ZERO」は、そのままで、加算命令「ADD R1,2」を、ブレーク命令を示す「BRK」に書き換える。
<プロセッサ4の動作>
ここで、プロセッサ4のデバッグ実行における割り込み発生処理について説明する。
図14は、前記割り込み発生処理の動作を説明するためのフロー図である。
まず、プロセッサ4は、デバッグ実行中に、デコードした命令が条件付ブレーク命令である場合(ステップS21:YES)、その条件付ブレーク命令の実行条件の成立状態を示すステータスフラグを確認し(ステップS22)、その結果、実行条件が成立していれば(ステップS23:YES)、例外登録をして、命令バッファに記憶された命令をフラッシュし、割り込み処理を実行する(ステップS24)。
上述のパイプライン処理で説明したように、条件付命令の実行条件は、DCステージ72で評価している。
以上説明したように、命令セットに条件付命令の実行条件を、実行条件として指定できる条件付ブレーク命令が含まれているプロセッサ4に、ソフトウェアブレーク手法で条件付命令を条件付ブレーク命令に書き換えた実行形式プログラムをデバッグ実行させると、プロセッサ4は、条件付ブレーク命令をデコードした際に、デバッグ装置等の外部の介在無しで、その条件付ブレーク命令の実行条件式が真であるか偽であるかに応じて、割り込み処理を実行するか否かを決定する。
すなわち、上述のプロセッサ4と、上述のブレークポイント設定処理を行うホストコンピュータ1を用いれば、従来の割り込み制御方法のようにデバッグ装置のシミュレーションを必要としないので、その分、デバッグ実行時間を短縮することができ、デバッグ作業の効率を高めることができる。
なお、本発明は上述の内容に限定されないのは勿論である。以下の内容も本発明に含まれる。
<予測可否判定処理>
デバッグ部13は、条件付命令の位置をブレークポイントに決定した場合、その条件付命令の実行条件が、デバッグ実行中に成立するかどうかを予測する処理を行うようにしてもよい。そして、予測不可能であれば、その旨をユーザに通知するようにしてもよい。
図18は、デバッグ部13が、ブレークポイントの設定前に、ブレークポイントとすべき条件付命令の実行条件が、デバッグ実行中に成立するかどうかについての予測可否を判定する予測可否判定処理を示すフロー図である。
まず、デバッグ情報検索処理部805は、ブレークポイントとすべき位置の条件付命令の、実行条件の状態変化を示すステータスフラグを0にする(ステップS31)。
続いて、検索開始位置であるデバッグ実行開始位置の命令を読み出す。読み出した命令がブレークポイントとすべき位置の指定された条件付命令であれば(ステップS32:YES)、ステップS43に進む。
そうでなければ(ステップS32:NO)、デバッグ情報検索処理部805は、その命令が他の実行条件を指定する条件付命令(以下、「第2条件付命令」と言う。)であるか否かを判定する(ステップS33)。
第2条件付命令であれば(ステップS33:YES)、続いて、デバッグ情報検索処理部805は、その実行条件の状態変化を示すステータスフラグが1であるかどうかを確認する(ステップS39)。
第2条件付命令の実行条件のステータスフラグが1であれば(ステップS39:YES)、続いて、デバッグ情報検索処理部805は、第2条件付命令が分岐命令であるかどうかを確認する(ステップS40)。
第2条件付命令が分岐命令であれば(ステップS40:YES)、デバッグ情報検索処理部805は、ブレークポイントとすべき位置の条件付命令の実行条件成立は、予測不可能と判定する(ステップS41)。
入出力処理部801は、ブレークポイント設定処理部806の予測不可能という判定に基づき、その旨をユーザに通知する出力処理を行う。
一方、ステップS33において、検索位置の命令が第2条件付命令でなければ(ステップS33:NO)、デバッグ情報検索処理部805は、続いて、その命令が、いずれかの条件付命令の実行条件に影響を及ぼす命令(以下、「条件生成命令」と言う。)であるかどうかを確認する(ステップS34)。
確認した結果、条件生成命令であれば(ステップS34:YES)、デバッグ情報検索処理部805は、その条件生成命令により影響を受ける実行条件のステータスフラグを1にして(ステップS36)、検索位置を次の命令に移す(ステップS38)。
ステップS34において、検索位置の命令が条件生成命令でなければ(ステップS34:NO)、デバッグ情報検索処理部805は、その命令が分岐命令かどうかを確認し、分岐命令であれば(ステップS35:YES)、検索位置を分岐先へ移し(ステップS27)、ステップS32に戻る。
ステップS35において、検索位置の命令が分岐命令でなければ(ステップS35:NO)、デバッグ情報検索処理部805は、検索位置を次の命令に移す(ステップS38)。
デバッグ情報検索処理部805は、ステップS43において、ブレークポイントとすべき位置の条件付命令の実行条件成立は予測可能と判定し(ステップS43)、ブレークポイント設定処理部806は、その判定結果により、指定された条件付命令の位置をブレークポイントに決定する(ステップS44)。その後、ブレークポイント設定処理部806は、図12に示したステップS2の処理に進む。
<検索処理1>
上述の予測可否判定処理のステップS41で、デバッグ情報検索処理部805が、ブレークポイントとすべき位置の、条件付命令の実行条件成立の予測は不可能と判定した場合、ブレークポイントとすべき位置の条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件を実行条件とする第2条件付命令及び実行条件を持たない無条件命令のうち、その条件付命令に最も近い位置にある命令を検出して、ブレークポイントとすべき位置の条件付命令と共に、その検出された命令の位置を予備のブレークポイントとするようにしてもよい。
図19は、予備のブレークポイントを検索する検索処理を示すフロー図である。
デバッグ情報検索処理部805は、ステップS41において、ブレークポイントとすべき位置の条件付命令の、実行条件成立の予測が不可能と判定した場合、指定された条件付命令に後続する次の命令を検索する(ステップS45)。
検索位置の命令が、ブレークポイントとすべき指定された条件付命令の実行条件とは異なる実行条件を実行条件とする条件付命令である場合(ステップS46:YES)、デバッグ情報検索処理部805は、ステップS49に進む。
ステップS46において、検索位置の命令が、ブレークポイントとすべき条件付命令の実行条件とは異なる実行条件を実行条件とする条件付命令でない場合(ステップS46:NO)、デバッグ情報検索処理部805は、その検索位置の命令が、実行条件を持たない無条件命令であるかどうかを確認する(ステップS47)。
その結果、実行条件を持たない無条件命令である場合(ステップS47:YES)、デバッグ情報検索処理部805は、ステップS49に進み、そうでない場合(ステップS47:NO)は、次の命令を検索し(ステップS48)、ステップS46の処理に戻る。
ブレークポイント設定処理部806は、指定された条件付命令と検出された命令の位置それぞれをブレークポイントに決定する(ステップS49)。その後、ブレークポイント設定処理部806は、図12に示したステップS2の処理に進む。
<検索処理2>
サブルーチンをデバッグ実行する場合に、そのサブルーチンに含まれる条件付命令の位置をブレークポイントに決定した場合、上述の予測可否判定処理を行う代わりに、以下に説明する検索処理を行って、予備のブレークポイントを1以上決定するようにしてもよい。
図20は、予備のブレークポイントを1以上決定するための検索処理を示すフロー図である。
まず、デバッグ情報検索処理部805は、図21に示す条件検索表210に示す各実行条件のステータスフラグを0にして、検索を開始する。
検索位置がサブルーチンの終了位置である場合(ステップS51:YES)、ステップS59に進む。
検索位置がサブルーチンの終了位置でなく(ステップS51:NO)、その位置の命令が条件付命令でなければ、すなわち、無条件命令であれば(ステップS52:NO)、ステップS59に進む。
検索位置の命令が条件付命令であり(ステップS52:YES)、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一である場合(ステップS53:YES)、デバッグ情報検索処理部805は、検索位置を次の命令に移す(ステップS57)。
ステップS53において、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一ではなく(ステップS53:NO)、反対条件である場合(ステップS54:YES)、デバッグ情報検索処理部805は、該当条件のステータスフラグを1にする(ステップS58)。その後、ステップS59に進む。
ステップS53において、その条件付命令の実行条件が検索済みの実行条件の実行条件と同一ではなく(ステップS53:NO)、反対条件でない場合(ステップS54:NO)、デバッグ情報検索処理部805は、該当条件のステータスフラグを1にする(ステップS58)。その後、条件検索表210の全てのステータスフラグが1になった場合(ステップS56:YES)、検索を終了する。
ステップS56において、条件検索表210の全てのステータスフラグが1でない場合(ステップS56:NO)、デバッグ情報検索処理部805は、検索位置を次の命令に移す(ステップS57)。
ステップS56において、デバッグ情報検索処理部805は、サブルーチンの終了位置、無条件命令の位置、検索済み実行条件の反対条件の条件付命令位置をブレークポイントの候補位置として登録し(ステップS59)、検索処理を終了する。
ブレークポイント設定処理部806は、上述の検索処理においてブレークポイントの候補位置として登録された位置のうち少なくとも1つをブレークポイントに決定する。
<ブレークポイント設定処理の具体例2>
ここで、あるサブルーチンをデバッグ実行する際に、そのサブルーチン内に含まれる条件付命令の位置をブレークポイントとし、サブルーチン内で必ずデバッグ実行を停止させるブレークポイント設定処理の具体例について説明する。
図15は、ソースプログラム15に含まれるサブルーチンの一部を表で示した図であり、図16は、ソースプログラム15を実行形式プログラム16に変換した際に作成される、実行形式プログラム16をニーモニックで表現したデバッグ情報17の一部を表で示した図である。
図15に示すソースプログラム15に含まれるサブルーチンの一部は、図16に示す実行形式プログラム16の一部と対応している。
図15に示す表には、ソースコードの行番号と、C言語で表現された実行文が記述されている。この表に示されるソースプログラムの意味は、「関数subに引数1を与えて呼び出し、戻り値を変数rに代入する(行番号10)。変数rの値が0であれば、メインプログラムに戻る(行番号11〜13)。」である。
一方、図16に示す表には、命令のアドレスと、命令の実行条件と、ニーモニックで表現された命令が記述されている。
この表に示されるニーモニックの意味は、「レジスタR1に1を格納する(アドレス0x80000000)。次の命令のアドレスをスタックに退避し、関数subに分岐する(アドレス0x80000004)。関数subの結果が0であれば、スタックポインタから戻り番地をプログラムカウンタに設定し、メインプログラムに復帰する(アドレス0x80000008)。関数subの結果が0でなければ、レジスタR1の値を、スタックポインタの値に0x10を足した値が示すアドレスのメモリに書き込む(アドレス0x8000000C)。」である。
図16に示す表において、アドレス0x80000008の位置、すなわち実行条件[ZERO]を指定する条件付命令の位置を、ブレークポイントとした場合、ブレークポイント設定処理部806は、図17に示すように、アドレス0x80000008の実行条件「ZERO」は、そのままで、リターン命令「RET」を、ブレーク命令を示す「BRK」に書き換えると共に、上述の検索処理により検出された、リターン命令「RET」に後続アドレス0x8000000Cの移動命令「MOV(SP+0x10),R1」を、ブレーク命令を示す「BRK」に書き換える。
<補足>
(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)上述の実施の形態では、説明を簡単にするため、命令フォーマットの一部のビットが実行条件を示すとしている。しかし、本発明の本質は、ブレーク命令に置き換えられてる命令の実行条件と、ブレーク命令の実行条件とを同じにすることである。例えば、実行条件を示すビットが命令フォーマットの特定位置にない場合でも、その実行条件を特定することができればよい。また、ブレーク命令に置き換えられる命令の実行条件が容易に識別可能で、ブレーク命令に同じ実行条件を設定することができればよい。
本発明は、ソフトウェア開発において行われるデバッグに有用である。
デバッグ支援システムの外観を示す図である。 ホストコンピュータ1の構成と、評価用ボード3の構成を示す図である。 プロセッサ4の32bit命令フォーマットを示す図である。 条件付ブレーク命令のフォーマットを示す図である。 プロセッサ4の16bit拡張命令フォーマットを示す図である。 16bit拡張命令セットにおける、条件付ブレーク命令のフォーマットを示す図である。 プロセッサ4のパイプライン構造を示す図である。 デバッグ部13が備える各処理部を示す図である。 ソースプログラムの一例を示す図である。 図9のソースプログラムに対応する実行形式プログラム16をニーモニックで表現したデバッグ情報17の一部を表で示した図である。 ブレークポイントが設定された実行形式プログラム16をニーモニックで表現したデバッグ情報17の一部を表で示した図である。 ブレークポイント設定処理のフロー図である。 ブレーク命令書換処理のフロー図である。 割り込み処理の発生動作を説明するためのフロー図である。 ソースプログラムの一例を示す図である。 図15のソースプログラムに対応する実行形式プログラム16をニーモニックで表現したデバッグ情報17の一部を表で示した図である。 ブレークポイントが設定された実行形式プログラム16をニーモニックで表現したデバッグ情報17の一部を表で示した図である。 予測可否判定処理を示すフロー図である。 予備のブレークポイントを検索する検索処理を示すフロー図である。 予備のブレークポイントを1以上決定するための検索処理を示すフロー図である。 条件検索表を示す図である。 各実行条件の反対条件を示した対応表である。 ARMプロセッサのARMコードにおけるブレーク命令のフォーマットを示す図である。 ARMプロセッサのThumbコードにおけるブレーク命令のフォーマットを示す図である。
符号の説明
1 ホストコンピュータ
2 接続ケーブル
3 評価用ボード
4 プロセッサ
5、18 IF部
6 バス
7 メモリ
11 プログラム変換部
12 記憶部
13 デバッグ部
14 入出力装置
15 ソースプログラム
16 実行形式プログラム
17 デバッグ情報

Claims (9)

  1. 条件付命令セットを含み、記憶装置に記憶された命令を実行する命令実行装置であって、
    令実行結果である値を記憶する記憶部と、
    実行条件フィールドを備える条件付命令を実行し、さらに、命令実行を中断する機能を有し、前記条件付命令と同一のフォーマットである実行条件フィールドを備える条件付デバッグ命令を実行する実行部と、
    前記条件付デバッグ命令の実行条件フィールドを参照することによって、前記記憶部に記憶されている値を使用する条件式を識別する識別部と、
    前記記憶部に記憶されている値を参照することにより、前記識別部により識別された条件式が真であるか偽であるかを判定する判定部と、
    前記条件式が偽であると判定された場合に、前記実行部における前記条件付デバッグ命令の実行を抑止する実行制御部とを備える
    ことを特徴とする命令実行装置。
  2. 前記条件付デバッグ命令の命令長は、前記命令実行装置の命令セットに含まれる命令のうち、命令長が最も短い命令の命令長以下であることを特徴とする請求項1に記載の命令実行装置。
  3. 請求項1に記載の命令実行装置が解読して実行することが可能なプログラムにコンピュータがブレークポイントを設定するデバッグ方法であって、
    コンピュータが、
    ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定している条件付デバッグ命令に書き換えることを特徴とするデバッグ方法。
  4. コンピュータが、
    ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令の実行結果により、前記条件付命令の実行条件に状態変化があるかを確認することによって、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、
    予測不可能と判定された場合に、その旨をユーザに通知する
    ことを特徴とする請求項に記載のデバッグ方法。
  5. コンピュータが、
    ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より前に位置する命令の実行結果により、前記条件付命令の実行条件に状態変化があるかを確認することによって、その条件付命令の実行条件が成立するかどうかについて予測可能か否かを判定し、
    予測不可能と判定された場合に、前記条件付命令より後に位置し、前記条件付命令の実行条件とは異なる実行条件の第2条件付命令及び実行条件を持たない無条件命令のうち、前記条件付命令に最も近い位置にある命令を検出し、
    検出された命令の位置をブレークポイントに決定する
    ことを特徴とする請求項4に記載のデバッグ方法。
  6. コンピュータが、
    ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令より後に位置し、その条件付命令の実行条件とは異なる実行条件の第2条件付命令及び実行条件を持たない無条件命令を少なくとも1つ検出するために検索を繰り返し、
    その結果検出された命令の位置をブレークポイントに決定する
    ことを特徴とする請求項に記載のデバッグ方法。
  7. コンピュータが、
    ブレークポイントに決定された位置の命令がサブルーチンに含まれる条件付命令である場合、
    前記検索における検索位置が、前記サブルーチンの終了位置に到達したか否かを判定し、
    前記判定において、検索位置が前記サブルーチンの終了位置に到達したと判定された場合、前記検索を終了する
    ことを特徴とする請求項に記載のデバッグ方法。
  8. 請求項1に記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグ装置であって、
    ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定している条件付デバッグ命令に書き換える書換手段を備える
    ことを特徴とするデバッグ装置。
  9. 請求項1記載の命令実行装置が解読して実行することが可能なプログラムにブレークポイントを設定するデバッグプログラムであって、
    コンピュータに、
    ブレークポイントに決定された位置の命令が条件付命令である場合に、その条件付命令を、その条件付命令の実行条件と同一の実行条件を指定している条件付デバッグ命令に書き換える書換ステップを実行させる
    ことを特徴とするデバッグプログラム。
JP2005155902A 2005-05-27 2005-05-27 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム Active JP4718901B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 デバッグシステム

Patent Citations (9)

* Cited by examiner, † Cited by third party
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