JPH0148564B2 - - Google Patents
Info
- Publication number
- JPH0148564B2 JPH0148564B2 JP58029159A JP2915983A JPH0148564B2 JP H0148564 B2 JPH0148564 B2 JP H0148564B2 JP 58029159 A JP58029159 A JP 58029159A JP 2915983 A JP2915983 A JP 2915983A JP H0148564 B2 JPH0148564 B2 JP H0148564B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- debug
- interrupt
- program
- address
- 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.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の詳細な説明】
〔発明の利用分野〕
本発明は、情報処理装置におけるプログラムの
デバグのため、プログラムの実行中にデバグ割込
みを発生する方式に関する。
デバグのため、プログラムの実行中にデバグ割込
みを発生する方式に関する。
従来、プログラムのデバグには、デバグされる
被デバグプログラムから、デバグを制御するプロ
グラム(以下DUと称す)に制御を移行(以下デ
イレールと称す)させ、デイレール時点における
被デバグプログラムの状態をDUで調べる方法等
がとられてきた。すなわち、被デバグプログラム
が第1図aのごとく、その一部が命令1〜5から
成り、命令1,4,5は2バイト長の命令、命令
2,3は4バイト長の命令であり、命令3の実行
直前にデイレール点を設定する場合には、第1図
bのごとく、再コンパイルによつて命令3の前に
DUへの分岐命令6を埋め込む方法や、第1図c
のごとく第1図aの命令3をDUの作業域7に退
避した後に、命令3の先頭を未定義の命令8に置
き替え、プログラムエラーによる割込みでDUに
制御を移す方法があつた。しかし、前者の方法
は、デバグ完了後、再コンパイルによつてDUへ
の分岐命令を除去しなければならず、また、後者
の方法は、DUの制御下で作業域7に退避した命
令3を実行後、命令4に制御を戻すために命令4
のアドレスをDUが管理しなければならない欠点
があつた。
被デバグプログラムから、デバグを制御するプロ
グラム(以下DUと称す)に制御を移行(以下デ
イレールと称す)させ、デイレール時点における
被デバグプログラムの状態をDUで調べる方法等
がとられてきた。すなわち、被デバグプログラム
が第1図aのごとく、その一部が命令1〜5から
成り、命令1,4,5は2バイト長の命令、命令
2,3は4バイト長の命令であり、命令3の実行
直前にデイレール点を設定する場合には、第1図
bのごとく、再コンパイルによつて命令3の前に
DUへの分岐命令6を埋め込む方法や、第1図c
のごとく第1図aの命令3をDUの作業域7に退
避した後に、命令3の先頭を未定義の命令8に置
き替え、プログラムエラーによる割込みでDUに
制御を移す方法があつた。しかし、前者の方法
は、デバグ完了後、再コンパイルによつてDUへ
の分岐命令を除去しなければならず、また、後者
の方法は、DUの制御下で作業域7に退避した命
令3を実行後、命令4に制御を戻すために命令4
のアドレスをDUが管理しなければならない欠点
があつた。
本発明は、上記従来の欠点を除去するため、特
定のコードを持つデバグ割込み発生用の命令(以
下、DI命令と称す)により、該DI命令が通常状
態で発生される場合は、該命令によるオペレーシ
ヨンを行わずその直後にある命令を実行し、DI
命令がデバグ状態で発行される場合は、デバグ割
込みを発生し、該割込みに伴つてメモリに格納さ
れる命令アドレスは、該DI命令のアドレスに該
命令の所定フイールドの内容を加算することによ
つて得るようにしたものである。
定のコードを持つデバグ割込み発生用の命令(以
下、DI命令と称す)により、該DI命令が通常状
態で発生される場合は、該命令によるオペレーシ
ヨンを行わずその直後にある命令を実行し、DI
命令がデバグ状態で発行される場合は、デバグ割
込みを発生し、該割込みに伴つてメモリに格納さ
れる命令アドレスは、該DI命令のアドレスに該
命令の所定フイールドの内容を加算することによ
つて得るようにしたものである。
第2図はDI命令の形式を例示したものである。
第2図において、9はDI命令、10はDI命令の
命令コードフイールド(以下、Fフイールドと称
す)、11は次に実行される命令のアドレス生成
に利用される第1のフイールド(以下、R1フイ
ールドと称す)、12は割込みコードの作成に利
用される第2のフイールド(以下、R2フイール
ドと称す)である。以下、本DI命令の長さは2
バイトであるとする。
第2図において、9はDI命令、10はDI命令の
命令コードフイールド(以下、Fフイールドと称
す)、11は次に実行される命令のアドレス生成
に利用される第1のフイールド(以下、R1フイ
ールドと称す)、12は割込みコードの作成に利
用される第2のフイールド(以下、R2フイール
ドと称す)である。以下、本DI命令の長さは2
バイトであるとする。
第3図に本発明によるデバグ割込み方式の処理
フローを示す。以下の説明において、デバグ状態
であるか通常状態であるかを表示するビツトおよ
び次に実行すべき命令のアドレス(以下SCCと称
す)は、情報処理装置内のプログラム状態語(以
下、PSWと称す)と呼ばれるレジスタに保持さ
れているものとする。
フローを示す。以下の説明において、デバグ状態
であるか通常状態であるかを表示するビツトおよ
び次に実行すべき命令のアドレス(以下SCCと称
す)は、情報処理装置内のプログラム状態語(以
下、PSWと称す)と呼ばれるレジスタに保持さ
れているものとする。
いま、PSWのSCCで指定されたアドレスに第
2図のDI命令9が存在しており、情報処理装置
(いわゆるCPU)が読出された該命令のFフイー
ルド10を解読してDI命令であることを検出し
た時、PSWが通常状態を表示していれば、DI命
令の命令長(本例では2)をSCCに加算してDI
命令の実行を終える(→→)。これにより、
DI命令は一般にノーオペレーシヨン(NOP)命
令と呼ばれる命令と同様に何らプログラムの論理
に関与せずに終了し、DI命令の2バイトあとに
ある次の命令が実行される。
2図のDI命令9が存在しており、情報処理装置
(いわゆるCPU)が読出された該命令のFフイー
ルド10を解読してDI命令であることを検出し
た時、PSWが通常状態を表示していれば、DI命
令の命令長(本例では2)をSCCに加算してDI
命令の実行を終える(→→)。これにより、
DI命令は一般にノーオペレーシヨン(NOP)命
令と呼ばれる命令と同様に何らプログラムの論理
に関与せずに終了し、DI命令の2バイトあとに
ある次の命令が実行される。
一方、PSWのSCCで指定されたアドレスにDI
命令9が存在し、情報処理装置がFフイールドを
解読してDI命令であることを検出した時、PSW
がデバグ状態を表示していれば、情報処理装置は
そのSCCにDI命令9のR1フイールド11の値を
加算した値でPSW内のSCCを更新してデバグ割
込み信号を発生する(→→→)。この割
込みに伴なつて、公知の例に従つて、更新後の
SCCを含むPSWの内容は、所定のメモリアドレ
スに旧PSWとして格納される()。
命令9が存在し、情報処理装置がFフイールドを
解読してDI命令であることを検出した時、PSW
がデバグ状態を表示していれば、情報処理装置は
そのSCCにDI命令9のR1フイールド11の値を
加算した値でPSW内のSCCを更新してデバグ割
込み信号を発生する(→→→)。この割
込みに伴なつて、公知の例に従つて、更新後の
SCCを含むPSWの内容は、所定のメモリアドレ
スに旧PSWとして格納される()。
R1フイールドの値をDI命令自身の命令長であ
る2としたDI命令は、従来行われてきた第1図
bのデバグ方法において分岐命令6の代りに使用
することができる。この場合、デバグ状態で被デ
バグプログラムを実行させると、命令6の位置に
あるDI命令を実行するとデバグ割込みが発生す
る。このとき旧PSWとして格納された内容には、
DI命令のアドレス+2番地にある命令3のアド
レスが含まれている。割込みに伴ない、PSWに
はDUの入口アドレスを含む新しいPSWがロード
され()、DUに制御が移行し、DUでは被デバ
グプログラムの命令2の実行後で、かつ命令3の
実行前の状態を解析することができる()。そ
の後、DUはデバグ割込みに伴つて格納された旧
PSWをPSWにロードすることにより、被デバグ
プログラムの命令3に制御を戻すことができる
()。なお、この方法を用いたデバグでは、デバ
グ完了後、DI命令を除去するために再コンパイ
ルを行う必要はなく、通常状態下で、第1図aの
プログラムと同一の結果を得ることができる。
る2としたDI命令は、従来行われてきた第1図
bのデバグ方法において分岐命令6の代りに使用
することができる。この場合、デバグ状態で被デ
バグプログラムを実行させると、命令6の位置に
あるDI命令を実行するとデバグ割込みが発生す
る。このとき旧PSWとして格納された内容には、
DI命令のアドレス+2番地にある命令3のアド
レスが含まれている。割込みに伴ない、PSWに
はDUの入口アドレスを含む新しいPSWがロード
され()、DUに制御が移行し、DUでは被デバ
グプログラムの命令2の実行後で、かつ命令3の
実行前の状態を解析することができる()。そ
の後、DUはデバグ割込みに伴つて格納された旧
PSWをPSWにロードすることにより、被デバグ
プログラムの命令3に制御を戻すことができる
()。なお、この方法を用いたデバグでは、デバ
グ完了後、DI命令を除去するために再コンパイ
ルを行う必要はなく、通常状態下で、第1図aの
プログラムと同一の結果を得ることができる。
従来行われてきた第1図cのデバグ方法に対し
ては、未定義の命令8の代りに、命令3の命令長
(本例では4)をR1フイールドの値としたDI命令
を用いることができる。この場合も、デバグ状態
で命令8の位置にあるDI命令を実行すると、デ
バグ割込みが発生し、旧PSWが格納される
()。このとき旧PSWとして格納された内容に
は、DI命令のアドレス+4番地にある命令4の
アドレスが含まれている。割込みによつてDUに
制御が移行すると()、DUは被デバグプログ
ラムの命令2の実行後で、かつ命令3の実行前の
状態を解析する()。解析後はDUはDUの作業
域7に退避された命令3を実行し()、デバグ
割込みに伴つて格納された旧PSWをPSWにロー
ドすることにより、被デバグプログラムの命令4
に制御を戻すことができる()。命令4のアド
レスはDI命令により生成され旧PSWの一部とし
て格納されているためDUは命令4のアドレスを
管理する必要がない。
ては、未定義の命令8の代りに、命令3の命令長
(本例では4)をR1フイールドの値としたDI命令
を用いることができる。この場合も、デバグ状態
で命令8の位置にあるDI命令を実行すると、デ
バグ割込みが発生し、旧PSWが格納される
()。このとき旧PSWとして格納された内容に
は、DI命令のアドレス+4番地にある命令4の
アドレスが含まれている。割込みによつてDUに
制御が移行すると()、DUは被デバグプログ
ラムの命令2の実行後で、かつ命令3の実行前の
状態を解析する()。解析後はDUはDUの作業
域7に退避された命令3を実行し()、デバグ
割込みに伴つて格納された旧PSWをPSWにロー
ドすることにより、被デバグプログラムの命令4
に制御を戻すことができる()。命令4のアド
レスはDI命令により生成され旧PSWの一部とし
て格納されているためDUは命令4のアドレスを
管理する必要がない。
なお、DI命令のR2フイールドはそのまま、あ
るいはR2フイールドで指定するレジスタの内容
をデバグ割込みに伴つてメモリに格納される割込
みコードとして使用することによつて、DUはデ
イレールの種別等を割込みコードから判定するこ
とが可能である。さらに、R2フイールドの値が
特定の値(例えば0)のときには、デバグ状態に
おいてもDI命令によるデバグ割込みを禁止する
ことによつて、被デバグプログラム内に埋め込ま
れた複数のDI命令のうち一部のR2フイールドを
0とすることにより、デイレール点として不活性
化する手法としても用いることができる。
るいはR2フイールドで指定するレジスタの内容
をデバグ割込みに伴つてメモリに格納される割込
みコードとして使用することによつて、DUはデ
イレールの種別等を割込みコードから判定するこ
とが可能である。さらに、R2フイールドの値が
特定の値(例えば0)のときには、デバグ状態に
おいてもDI命令によるデバグ割込みを禁止する
ことによつて、被デバグプログラム内に埋め込ま
れた複数のDI命令のうち一部のR2フイールドを
0とすることにより、デイレール点として不活性
化する手法としても用いることができる。
以上説明したように、本発明によればDI命令
のR1フイールドは、DUから被デバグプログラム
へ制御を戻す際の命令アドレスをデイレールの時
点で旧PSWに設定しておく手段を提供しており、
DUの負担を軽減する効果がある。さらに、DI命
令を目的プログラムの生成時にあらかじめ埋め込
んだデバグ方法を採つた場合、デバグ終了後、被
デバグプログラムを再コンパイルすることなく使
用できる利点がある。
のR1フイールドは、DUから被デバグプログラム
へ制御を戻す際の命令アドレスをデイレールの時
点で旧PSWに設定しておく手段を提供しており、
DUの負担を軽減する効果がある。さらに、DI命
令を目的プログラムの生成時にあらかじめ埋め込
んだデバグ方法を採つた場合、デバグ終了後、被
デバグプログラムを再コンパイルすることなく使
用できる利点がある。
第1図a,b,cは従来のデバグ方法を説明す
る図、第2図はDI命令の形式例を示す図、第3
図は本発明によるデバグ割込み方式の処理フロー
図である。 1〜6,8……命令、7……デバグ制御プログ
ラムの作業域、9……DI命令。
る図、第2図はDI命令の形式例を示す図、第3
図は本発明によるデバグ割込み方式の処理フロー
図である。 1〜6,8……命令、7……デバグ制御プログ
ラムの作業域、9……DI命令。
Claims (1)
- 1 プログラムのデバグのためのデバグ割込み方
式であつて、プログラムの実行中にデバグ割込み
が発生し得るデバグ状態であるか、デバグ割込み
が発生しない通常状態であるかを表示するビツト
を情報処理装置内のプログラム制御可能なレジス
タに保持しておき、特定の命令コードを持つ命令
が通常状態で発行されると、該命令によるオペレ
ーシヨンを行わずに、該命令の直後にある命令を
実行し、前記特定の命令コードを持つ命令がデバ
グ状態で発行されると、デバグ割込みを発生し、
該割込みに伴つてメモリに格納される命令アドレ
スは該命令のアドレスに該命令の所定のフイール
ドの内容を加算することによつて得ることを特徴
とするデバグ割込み方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58029159A JPS59154553A (ja) | 1983-02-23 | 1983-02-23 | デバグ割込み方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58029159A JPS59154553A (ja) | 1983-02-23 | 1983-02-23 | デバグ割込み方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS59154553A JPS59154553A (ja) | 1984-09-03 |
| JPH0148564B2 true JPH0148564B2 (ja) | 1989-10-19 |
Family
ID=12268478
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP58029159A Granted JPS59154553A (ja) | 1983-02-23 | 1983-02-23 | デバグ割込み方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS59154553A (ja) |
-
1983
- 1983-02-23 JP JP58029159A patent/JPS59154553A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS59154553A (ja) | 1984-09-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0537309B1 (en) | System and method for preserving source instruction atomicity in translated program code | |
| US6308318B2 (en) | Method and apparatus for handling asynchronous exceptions in a dynamic translation system | |
| US5404466A (en) | Apparatus and method to set and reset a pipeline instruction execution control unit for sequential execution of an instruction interval | |
| JPH0810437B2 (ja) | 仮想計算機システムのゲスト実行制御方式 | |
| JP2922723B2 (ja) | 情報処理装置 | |
| JPH0148564B2 (ja) | ||
| JP3183228B2 (ja) | プログラムデバッグ装置およびデバッグ方法 | |
| JP2562838B2 (ja) | プロセッサ及びストアバッファ制御方法 | |
| JP2002351695A (ja) | プログラムのデバッグ方法、デバッグ装置およびプログラムデバッグ用の記録媒体 | |
| JPH08320813A (ja) | プログラムシミュレータ装置及びプログラムデバッグ方法 | |
| JP3130798B2 (ja) | バス転送装置 | |
| JPH02181236A (ja) | デバッグ装置 | |
| JPH05108404A (ja) | デバツガシステム | |
| JP2686801B2 (ja) | マイクロコンピュータのプログラム開発ツール | |
| JPS63178343A (ja) | 中断点の設定方式 | |
| JPH0250494B2 (ja) | ||
| JPS63228237A (ja) | プログラムデバツグ方式 | |
| JPS59202548A (ja) | デバツグ装置 | |
| JP2002014844A (ja) | デバッグ方法及び記録媒体 | |
| JPH0259829A (ja) | マイクロコンピュータ | |
| JPS61233838A (ja) | 情報処理装置 | |
| JPH04199336A (ja) | マイクロコンピュータ | |
| JPS6231434A (ja) | 命令アドレス制御方式 | |
| JPH04186442A (ja) | ブレークポイント設定方式 | |
| JPH0772874B2 (ja) | 割込み受取り装置 |