JPH01177139A - 命令置換方式 - Google Patents
命令置換方式Info
- Publication number
- JPH01177139A JPH01177139A JP63000954A JP95488A JPH01177139A JP H01177139 A JPH01177139 A JP H01177139A JP 63000954 A JP63000954 A JP 63000954A JP 95488 A JP95488 A JP 95488A JP H01177139 A JPH01177139 A JP H01177139A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- replacement
- circuit
- breakpoint
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 9
- 238000004519 manufacturing process Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は命令置換方式、特にプログラムデバッグに使用
される命令置換方式に関する。
される命令置換方式に関する。
プログラムをデバッグする除用いるツールであるデバッ
ガには、プログラムがある箇所を通過した時に、プログ
ラムの実行を一時中断(ブレーク)させるブレークポイ
ント機能が存在し、さらにこのブレークポイント機能に
は、テンポラリなもの、すなわちブレーク後プログラム
の実行が再開され再びその箇所を通過したときにはブレ
ークしないものと、パーマネントなもの、すなわちブレ
ーク後プログラムの実行が再開され再びその箇所を通過
したときにもブレークするものが存在する。
ガには、プログラムがある箇所を通過した時に、プログ
ラムの実行を一時中断(ブレーク)させるブレークポイ
ント機能が存在し、さらにこのブレークポイント機能に
は、テンポラリなもの、すなわちブレーク後プログラム
の実行が再開され再びその箇所を通過したときにはブレ
ークしないものと、パーマネントなもの、すなわちブレ
ーク後プログラムの実行が再開され再びその箇所を通過
したときにもブレークするものが存在する。
従来このパーマネントなブレークポイント機能は、通常
中央処理装置(CPtJ)のブレーク命令のトラップ機
能とシングルステップ命令のトラップ機能とを用いて実
現されている。デバッガは、ブレークポイントをセット
する場合、セットするブレークポイントを管理するテー
ブル(以下ブレークポイントテーブルという)に登録し
、このアドレスの木兄の命令をブレークポイントテーブ
ルに退避し、このアドレスにブレーク命令を埋込む。
中央処理装置(CPtJ)のブレーク命令のトラップ機
能とシングルステップ命令のトラップ機能とを用いて実
現されている。デバッガは、ブレークポイントをセット
する場合、セットするブレークポイントを管理するテー
ブル(以下ブレークポイントテーブルという)に登録し
、このアドレスの木兄の命令をブレークポイントテーブ
ルに退避し、このアドレスにブレーク命令を埋込む。
プログラムはそのブレーク命令を実行することでトラッ
プすることによりブレークする。ブレーク命令の例外処
理ルーチンは、テーブルに登録されている各ブレークポ
イントのブレーク命令をそれぞれ退避した命令に戻した
後に、逆アセンブル等のデバッグ処理を行う。そして、
このアドレスがテンポラリなブレークポインl〜の時は
再度ブレークがかからないようにブレークポイントテー
ブルから削除したのち、他のブレークポイントテーブル
に登録されている各ブレークポイントに、再度ブレーク
をかけるようにもい一度ブレーク命令を埋込み、プログ
ラムを実行を再開する。
プすることによりブレークする。ブレーク命令の例外処
理ルーチンは、テーブルに登録されている各ブレークポ
イントのブレーク命令をそれぞれ退避した命令に戻した
後に、逆アセンブル等のデバッグ処理を行う。そして、
このアドレスがテンポラリなブレークポインl〜の時は
再度ブレークがかからないようにブレークポイントテー
ブルから削除したのち、他のブレークポイントテーブル
に登録されている各ブレークポイントに、再度ブレーク
をかけるようにもい一度ブレーク命令を埋込み、プログ
ラムを実行を再開する。
ここでもし、実行再開アドレスがパーマネントなブレー
クポイントであった場合は、このアドレスもブレークポ
イントテーブルに登録されたままなので、ブレーク命令
が埋込まれているため、再び退避した命令を元に戻し、
この命令をシングルステップ命令で実行し、トラップし
た例外処理ルーチンで、ブレーク命令を埋込み、プログ
ラムの実行を再開するという複雑な方法がとられている
。
クポイントであった場合は、このアドレスもブレークポ
イントテーブルに登録されたままなので、ブレーク命令
が埋込まれているため、再び退避した命令を元に戻し、
この命令をシングルステップ命令で実行し、トラップし
た例外処理ルーチンで、ブレーク命令を埋込み、プログ
ラムの実行を再開するという複雑な方法がとられている
。
したがって、デバッガにおいて提供されているような、
ブレークポイント機能、特にパーマネントなブレークポ
イント機能の実現には、従来は複数のCPU命令からな
るプログラムによって実現されている。
ブレークポイント機能、特にパーマネントなブレークポ
イント機能の実現には、従来は複数のCPU命令からな
るプログラムによって実現されている。
上述のように、デバッガでパーマネントなブレークポイ
ント機能を実現するためには、デバッガの実施者が、シ
ングルステップ命令のトラップ機能を利用して、プログ
ラムでこの機能を実現する必要がある。そのために、デ
バッガの開発時には、このプログラムを製作するための
余分な手間が必要になると同時に、製作したプログラム
にバグが含まれる可能性も高くなる。また、プログラム
で実現されたパーマネントなブレークポイントでは、−
回ブレークポイントを通過する毎に2つのトラップが発
生して、例外処理ルーチンに制御が移されるため、不必
要な処理によって処理速度が低下するという問題点があ
る。また、シングルステップ命令のトラップには、上述
のようなパーマネントなブレークポイントの処理を行う
場合の他に、デバッガのシングルステップ機能の処理、
すなわち−命令実行後、デバ・ソゲ処理を行う場合があ
り、シングルステップ命令の例外処理ルーチンでは、こ
れらの切分けが必要で、これはバグを作る原因となると
ともに、性能の低下にもなる。
ント機能を実現するためには、デバッガの実施者が、シ
ングルステップ命令のトラップ機能を利用して、プログ
ラムでこの機能を実現する必要がある。そのために、デ
バッガの開発時には、このプログラムを製作するための
余分な手間が必要になると同時に、製作したプログラム
にバグが含まれる可能性も高くなる。また、プログラム
で実現されたパーマネントなブレークポイントでは、−
回ブレークポイントを通過する毎に2つのトラップが発
生して、例外処理ルーチンに制御が移されるため、不必
要な処理によって処理速度が低下するという問題点があ
る。また、シングルステップ命令のトラップには、上述
のようなパーマネントなブレークポイントの処理を行う
場合の他に、デバッガのシングルステップ機能の処理、
すなわち−命令実行後、デバ・ソゲ処理を行う場合があ
り、シングルステップ命令の例外処理ルーチンでは、こ
れらの切分けが必要で、これはバグを作る原因となると
ともに、性能の低下にもなる。
本発明の目的は、パーマネントなブレークポイント機能
実現の上記のような不具合を除去し、中央処理装置に僅
かな回路を付加することにより、単純な命令置換方式を
提供することにある。
実現の上記のような不具合を除去し、中央処理装置に僅
かな回路を付加することにより、単純な命令置換方式を
提供することにある。
本発明の命令置換方式は、中央処理装置において、実行
する命令のアドレスを保持するプログラムカウンタと、
置換する命令のアドレスを保持する命令置換アドレスレ
ジスタと、命令置換の有無を保持する命令置換フラグ保
持回路と、この命令置換フラグ保持回路をリセットする
リセット回路と、置換する命令を保持する置換命令レジ
スタと、一命令実行機構とを具備し、プログラムがパー
マネントなブレークポイントでブレークしたとき、例外
処理ルーチンが前記命令置換フラグ保持回路をセットし
、かつ前記プログラムカウンタと前記命令置換アドレス
レジスタの内容が一致した時に、メモリ中の前記命令置
換アドレスレジスタが示すアドレスの命令を前記置換命
令レジスタの内容と入換え、このアドレスから一命令実
行後さらにこのアドレスの内容を前記置換命令レジスタ
の元の命令に置換えると共に前記命令置換フラグ保持回
路をリセットし、実行を続行することにより構成される
。
する命令のアドレスを保持するプログラムカウンタと、
置換する命令のアドレスを保持する命令置換アドレスレ
ジスタと、命令置換の有無を保持する命令置換フラグ保
持回路と、この命令置換フラグ保持回路をリセットする
リセット回路と、置換する命令を保持する置換命令レジ
スタと、一命令実行機構とを具備し、プログラムがパー
マネントなブレークポイントでブレークしたとき、例外
処理ルーチンが前記命令置換フラグ保持回路をセットし
、かつ前記プログラムカウンタと前記命令置換アドレス
レジスタの内容が一致した時に、メモリ中の前記命令置
換アドレスレジスタが示すアドレスの命令を前記置換命
令レジスタの内容と入換え、このアドレスから一命令実
行後さらにこのアドレスの内容を前記置換命令レジスタ
の元の命令に置換えると共に前記命令置換フラグ保持回
路をリセットし、実行を続行することにより構成される
。
次に、本発明の一実施例について図面を参照して説明す
る。
る。
第1図は本発明の一実施例のプロ・ツク図で、本発明に
関する中央処理装置の一部を示す。第1図において、1
はデータバス、2は命令置換フラグ保持回路、3はプロ
グラムカウンタ、4は命令置換アドレスレジスタ、5は
置換命令レジスタ、6は比較回路、7は論理積回路、8
は命令置換回路、9は一命令実行回路、10はリセット
回路である。
関する中央処理装置の一部を示す。第1図において、1
はデータバス、2は命令置換フラグ保持回路、3はプロ
グラムカウンタ、4は命令置換アドレスレジスタ、5は
置換命令レジスタ、6は比較回路、7は論理積回路、8
は命令置換回路、9は一命令実行回路、10はリセット
回路である。
この構成における動作について説明を進めると、先ず命
令置換フラグ保持回路2はオフに初期設定されているも
のとする。デバッガがブレークポイント機能を実現する
場合は、従来と同様にブレークポイントをセットしたい
各アドレスの命令をブレークポイントテーブルに退避し
、それぞれにブレークポイント命令を埋込む。プログラ
ムがブレークポイントでブレークするとその例外処理ル
ーチンは、各ブレークポイント命令を、それぞれ退避し
ていた元の命令に置換え、デバッグ処理を行い、このア
ドレスがテンポラリなブレークポイントであれば従来と
同様に他の各ブレークポイントにもう一度ブレーク命令
を埋込む。もしそのブレークポイントがパーマネントな
ブレークポイントであればもう一度ブレーク命令を埋込
み、命令置換フラグ保持回路2をセットしてオンにし、
そのアドレスを命令置換アドレスレジスタ4に格納し、
退避している元の命令を置換命令レジスタ5に格納する
。プログラムの実行が再開され、プログラムカウンタ3
の値と命令置換アドレスレジスタ4の値が等しくなると
、比較回路6の出力はオンとなり、命令置換フラグがオ
ンなので、論理積回路7を通して論理積回路8と一命令
実行回路つとにオン信号が送られる。そこで命令置換回
路8は、命令置換アドレスレジスタ4の示すアドレスの
命令すなわちブレーク命令と置換命令レジスタ5の内容
すなわち退避された元の命令とを入換え、−命令実行回
路9により元の命令が実行される。−命令実行回路9は
、−命令実行後命令置換回路8とリセット回路11とに
オン信号を出力し、命令置換回路8に、再び命令置換ア
ドレスレジスタ4の示すアドレスの命令すなわち元の命
令と置換命令レジスタ5の内容すなわちブレーク命令と
を入換させ、リセット回路11を介して、命令置換フラ
グ保持回路2をリセットしてフラグをオフとする。
令置換フラグ保持回路2はオフに初期設定されているも
のとする。デバッガがブレークポイント機能を実現する
場合は、従来と同様にブレークポイントをセットしたい
各アドレスの命令をブレークポイントテーブルに退避し
、それぞれにブレークポイント命令を埋込む。プログラ
ムがブレークポイントでブレークするとその例外処理ル
ーチンは、各ブレークポイント命令を、それぞれ退避し
ていた元の命令に置換え、デバッグ処理を行い、このア
ドレスがテンポラリなブレークポイントであれば従来と
同様に他の各ブレークポイントにもう一度ブレーク命令
を埋込む。もしそのブレークポイントがパーマネントな
ブレークポイントであればもう一度ブレーク命令を埋込
み、命令置換フラグ保持回路2をセットしてオンにし、
そのアドレスを命令置換アドレスレジスタ4に格納し、
退避している元の命令を置換命令レジスタ5に格納する
。プログラムの実行が再開され、プログラムカウンタ3
の値と命令置換アドレスレジスタ4の値が等しくなると
、比較回路6の出力はオンとなり、命令置換フラグがオ
ンなので、論理積回路7を通して論理積回路8と一命令
実行回路つとにオン信号が送られる。そこで命令置換回
路8は、命令置換アドレスレジスタ4の示すアドレスの
命令すなわちブレーク命令と置換命令レジスタ5の内容
すなわち退避された元の命令とを入換え、−命令実行回
路9により元の命令が実行される。−命令実行回路9は
、−命令実行後命令置換回路8とリセット回路11とに
オン信号を出力し、命令置換回路8に、再び命令置換ア
ドレスレジスタ4の示すアドレスの命令すなわち元の命
令と置換命令レジスタ5の内容すなわちブレーク命令と
を入換させ、リセット回路11を介して、命令置換フラ
グ保持回路2をリセットしてフラグをオフとする。
以上の構成と動作により、命令置換フラグ保持回路2に
“°1°゛が設定されていて、かつプログラムカウンタ
3の値と命令置換アドレスレジスタ4の値とが一致した
ばいに、命令置換回路8によりこのアドレスの命令が元
の命令にもどされ、−命令実行回路9によりシングルス
テップでこの命令が実行され、再び命令置換回路8によ
り、このアドレスにブレーク命令が埋め込まれる。
“°1°゛が設定されていて、かつプログラムカウンタ
3の値と命令置換アドレスレジスタ4の値とが一致した
ばいに、命令置換回路8によりこのアドレスの命令が元
の命令にもどされ、−命令実行回路9によりシングルス
テップでこの命令が実行され、再び命令置換回路8によ
り、このアドレスにブレーク命令が埋め込まれる。
以上説明したように本発明は、中央処理装置において指
定されたアドレスとプログラムカウンタの値が一致した
ときに、このアドレスの命令を元の命令と置き換え、−
命令実行後、再びこのアドレスの命令を元に戻す機能を
提供するため、デバッガ製作時にはこの機能によって、
パーマネントなブレークポイント機能が実現でき、ラフ
1〜ウエアでこの機能を実現しなければならなかった従
来の製作に比べ、設計製造効率の向上が期待できる。
定されたアドレスとプログラムカウンタの値が一致した
ときに、このアドレスの命令を元の命令と置き換え、−
命令実行後、再びこのアドレスの命令を元に戻す機能を
提供するため、デバッガ製作時にはこの機能によって、
パーマネントなブレークポイント機能が実現でき、ラフ
1〜ウエアでこの機能を実現しなければならなかった従
来の製作に比べ、設計製造効率の向上が期待できる。
また、この機能のためのソフトウェアが含むバグの心配
がなくなるため、製作するデバッギングツールの信頼性
の向上も期待できる。特に、シングルステップ命令のト
ラップを利用する必要がなくなるため、シングルステッ
プ命令の例外処理ルーチンにおける、パーマネントなブ
レークポイント機能とシングルステップ機能の切分けと
いう複雑な処理が必要でなくなるため、信頼性と性能の
向上が期待できる。
がなくなるため、製作するデバッギングツールの信頼性
の向上も期待できる。特に、シングルステップ命令のト
ラップを利用する必要がなくなるため、シングルステッ
プ命令の例外処理ルーチンにおける、パーマネントなブ
レークポイント機能とシングルステップ機能の切分けと
いう複雑な処理が必要でなくなるため、信頼性と性能の
向上が期待できる。
さらに、本発明の命令置換方式では、指定した回数だけ
ブレークポイントを無視するブレークポイント機能にお
いて、不必要なブレークポイントトラップが発生しない
ため、処理速度が高まりリアルタイム性の向上も期待で
きる。
ブレークポイントを無視するブレークポイント機能にお
いて、不必要なブレークポイントトラップが発生しない
ため、処理速度が高まりリアルタイム性の向上も期待で
きる。
第1図は本発明の一実施例のブロック図である。
1・・・データバス、2・・・命令置換フラグ、3・・
・プログラムカウンタ、4・・・命令置換アドレスレジ
スタ、5・・・置換命令レジスタ、6・・・比較回路、
7・・・論理回路、8・・・命令置換回路、9・・・−
命令実行回路、10・・・リセット回路。
・プログラムカウンタ、4・・・命令置換アドレスレジ
スタ、5・・・置換命令レジスタ、6・・・比較回路、
7・・・論理回路、8・・・命令置換回路、9・・・−
命令実行回路、10・・・リセット回路。
Claims (1)
- 中央処理装置において、実行する命令のアドレスを保持
するプログラムカウンタと、置換する命令のアドレスを
保持する命令置換アドレスレジスタと、命令置換の有無
を保持する命令置換フラグ保持回路と、この命令置換フ
ラグ保持回路をリセットするリセット回路と、置換する
命令を保持する置換命令レジスタと、一命令実行機構と
を具備し、プログラムがパーマネントなブレークポイン
トでブレークしたとき、例外処理ルーチンが前記命令置
換フラグ保持回路をセットし、かつ前記プログラムカウ
ンタと前記命令置換アドレスレジスタの内容が一致した
時に、メモリ中の前記命令置換アドレスレジスタが示す
アドレスの命令を前記置換命令レジスタの内容と入換え
、このアドレスから一命令実行後さらにこのアドレスの
内容を前記置換命令レジスタの元の命令に置換えると共
に前記命令置換フラグ保持回路をリセットし、実行を続
行することを特徴とする命令置換方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63000954A JPH0727477B2 (ja) | 1988-01-05 | 1988-01-05 | 命令置換方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63000954A JPH0727477B2 (ja) | 1988-01-05 | 1988-01-05 | 命令置換方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH01177139A true JPH01177139A (ja) | 1989-07-13 |
| JPH0727477B2 JPH0727477B2 (ja) | 1995-03-29 |
Family
ID=11488066
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63000954A Expired - Fee Related JPH0727477B2 (ja) | 1988-01-05 | 1988-01-05 | 命令置換方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0727477B2 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04321139A (ja) * | 1991-04-22 | 1992-11-11 | Mitsubishi Electric Corp | デバッグ支援装置 |
| JP2014510960A (ja) * | 2011-01-19 | 2014-05-01 | アルゴトゥチップ コーポレーション | ツール・ジェネレータ |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5549764A (en) * | 1978-10-03 | 1980-04-10 | Nippon Telegr & Teleph Corp <Ntt> | Memory control system |
| JPS62196742A (ja) * | 1986-02-25 | 1987-08-31 | Nec Corp | メモリ常駐モジユ−ルのデ−タ収集方式 |
-
1988
- 1988-01-05 JP JP63000954A patent/JPH0727477B2/ja not_active Expired - Fee Related
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5549764A (en) * | 1978-10-03 | 1980-04-10 | Nippon Telegr & Teleph Corp <Ntt> | Memory control system |
| JPS62196742A (ja) * | 1986-02-25 | 1987-08-31 | Nec Corp | メモリ常駐モジユ−ルのデ−タ収集方式 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04321139A (ja) * | 1991-04-22 | 1992-11-11 | Mitsubishi Electric Corp | デバッグ支援装置 |
| JP2014510960A (ja) * | 2011-01-19 | 2014-05-01 | アルゴトゥチップ コーポレーション | ツール・ジェネレータ |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0727477B2 (ja) | 1995-03-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1125199B1 (en) | Method of debugging a program thread | |
| US6772372B2 (en) | System and method for monitoring unaligned memory accesses | |
| JPH0727477B2 (ja) | 命令置換方式 | |
| JPH0581070A (ja) | プログラマブルコントローラ、およびプログラマブルコントローラにおけるユーザプログラム実行方法 | |
| CN107315685A (zh) | 一种非侵入式程序实时调试方法 | |
| JPS60124746A (ja) | デ−タ処理装置 | |
| JPS63178343A (ja) | 中断点の設定方式 | |
| JPH02135545A (ja) | デバッガの実行制御処理方式 | |
| JPH0241532A (ja) | マイクロプロセッサの例外処理方法 | |
| JPH04328644A (ja) | デバッグ支援装置 | |
| JP3029355B2 (ja) | 命令のシングルステップ実行方式 | |
| JPH03168844A (ja) | プログラムデバッグ方式 | |
| JPH03164944A (ja) | マイクロプログラムデバッグ処理装置 | |
| JPH02191046A (ja) | プログラムの追跡方式 | |
| JPS61210440A (ja) | レベルトレ−ス装置 | |
| JPH0340143A (ja) | パイプライン方式計算機におけるデバッグ方式 | |
| JPS63205740A (ja) | プログラム実行トレ−ス処理方式 | |
| JPH01274253A (ja) | ソフトウェアブレーク方式 | |
| JPS63217433A (ja) | プログラム実行制御方式 | |
| JPH0239332A (ja) | ソフトウェアブレーク方式 | |
| JPH0210441A (ja) | トレース回路 | |
| JPH0488438A (ja) | 高級言語による原始プログラムに対するデバッガの一命令実行方式 | |
| JPS62107345A (ja) | 情報処理装置 | |
| JPS59202550A (ja) | デバツグ装置 | |
| JPS62212743A (ja) | メモリダンプ方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |