JPH0553879A - プログラム障害情報収集方式 - Google Patents

プログラム障害情報収集方式

Info

Publication number
JPH0553879A
JPH0553879A JP3210887A JP21088791A JPH0553879A JP H0553879 A JPH0553879 A JP H0553879A JP 3210887 A JP3210887 A JP 3210887A JP 21088791 A JP21088791 A JP 21088791A JP H0553879 A JPH0553879 A JP H0553879A
Authority
JP
Japan
Prior art keywords
register file
contents
instruction
program
save area
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.)
Pending
Application number
JP3210887A
Other languages
English (en)
Inventor
Toshikazu Miyazaki
壽和 宮崎
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP3210887A priority Critical patent/JPH0553879A/ja
Publication of JPH0553879A publication Critical patent/JPH0553879A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 プログラム障害によるプログラム・チェック
発生時に、汎用レジスタ・ファイルの内容及びプログラ
ム・カウンタが無意味な値となった場合の障害解析情報
を得る。 【構成】 サブルーチンからメインルーチンへ復帰する
場合のロードマルチ命令実行時に、プログラム・カウン
タ5と汎用レジスタ・ファイル(レジスタ・ファイルの
一例)6の内容をセーブしておくセーブ・レジスタ・フ
ァイル(セーブ領域部の一例)7を備えた。 【効果】 障害解析情報が、セーブ・レジスタ・ファイ
ル7から得られる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、コンピュータ・プロ
グラムの障害情報収集方式に関するものである。
【0002】
【従来の技術】図4はコンピュータの制御部を示す図で
あり、図において、1はメイン・メモリ、2はメイン・
メモリ1から読み出した命令を入れておく命令レジス
タ、3は命令デコーダ、4はメイン・メモリ1をアクセ
スするメモリ・アドレス・レジスタ、5は実行する命令
のアドレスを保持するプログラム・カウンタ、6は作業
用の汎用レジスタ・ファイルである。
【0003】次に動作について説明する。メイン・メモ
リ1から読み出した命令は、一旦命令レジスタ2に入れ
られる。命令レジスタ2の命令コードは、命令デコーダ
3により解読され実行される。分岐命令の時は、命令レ
ジスタ2の下位3バイトが飛び先アドレスとして、プロ
グラム・カウンタ5に入れられる。その他の命令ではプ
ログラム・カウンタは、次の命令アドレスをポイントす
るために増加される。このプログラムカウンタ5の内容
は、メモリ・アドレス・レジスタ4へ渡され、次の命令
の取り出しに使用される。汎用レジスタ・ファイル6は
メイン・メモリ1から読み出したデータを保持したり、
演算結果を一時的に入れておくために使用する。たとえ
ば、ストア・マルチ命令という命令により、汎用レジス
タ・ファイル6の全部のレジスタをメイン・メモリ1の
特定のエリアをセーブ・エリアとして、このセーブ・エ
リア3へセーブすることができる。また、たとえば、ロ
ード・マルチ命令という命令によりメイン・メモリ1の
セーブ・エリアから汎用レジスタ・ファイル6の全部の
レジスタへロードすることができる。
【0004】特に、サブルーチン・コールをする場合
に、メインルーチンとなる呼び出し元のプログラムはセ
ーブ・エリアをポイントするセーブ・エリア・アドレス
と呼び出し元のプログラムの戻り先アドレスを汎用レジ
スタ・ファイル6の中の特定のレジスタ(以下、セーブ
・エリア・アドレス・レジスタという)にセットして、
サブルーチンに分岐する。サブルーチンでは呼び出し元
のプログラムのレジスタをストア・マルチ命令によりセ
ーブ・エリア・アドレスで示されるメイン・メモリ1の
セーブ・エリアにセーブしてから、汎用レジスタ・ファ
イル6を使用して、所定の機能を実行する。実行し終る
とセーブ・エリア・アドレスで示されるセーブ・エリア
からロード・マルチ命令により、汎用レジスタ・ファイ
ル6の内容を呼び出し元のプログラムがサブルーチンを
呼んだときのレジスタの状態へ回復し、呼び出し元の戻
り先アドレスへ復帰する。
【0005】
【発明が解決しようとする課題】従来のコンピュータ制
御部は、以上のように構成されているので、サブルーチ
ンの中でプログラム障害があってセーブ・エリア・アド
レスを保持するセーブ・エリア・アドレス・レジスタの
内容が破壊された場合、サブルーチンからメインルーチ
ンに復帰する時に、ロード・マルチ命令により汎用レジ
スタ・ファイル6の全部の内容を破壊するとともに誤っ
た戻り先アドレスへ分岐し、結果として、プログラム・
チェック割込みが発生した時に、汎用レジスタ・ファイ
ル6の内容とプログラム・カウンタ5の内容が無意味な
値になっており、障害解析のための情報が得られないと
いう問題点があった。
【0006】この発明は上記のような問題点を解消する
ためになされたもので、たとえば、サブルーチンの中で
プログラム障害があってセーブ・エリア・アドレスを保
持するセーブ・エリア・アドレス・レジスタの内容が破
壊された場合にも、障害解析のための情報を得られるプ
ログラム障害情報収集方式を提供することを目的として
いる。
【0007】
【課題を解決するための手段】この発明に係るプログラ
ム障害情報収集方式は、プログラム・カウンタあるいは
汎用レジスタ・ファイルの内容をストア・マルチ命令実
行時あるいはロードマルチ命令実行時にセーブするセー
ブ・レジスタ・ファイル(セーブ領域部の一例)を備え
るようにしたものであり、以下の要素を有するものであ
る。 (a)実行する命令のアドレスを保持するプログラム・
カウンタ、(b)実行中にデータを格納するレジスタを
少なくともひとつ以上有するレジスタ・ファイル、
(c)メインルーチンとサブルーチン間での制御の移動
に用いる情報を格納するセーブエリア、(d)上記セー
ブエリアとは別個に設けられ、少なくとも上記プログラ
ム・カウンタとレジスタ・ファイルのいずれか一方の内
容を格納できるセーブ領域部、(e)少なくとも、メイ
ンルーチンからサブルーチンへ制御が移る場合と、サブ
ルーチンからメインルーチンへ制御が移る場合のいずれ
か一方の場合、少なくとも上記プログラム・カウンタと
レジスタ・ファイルのいずれか一方の内容をセーブ領域
部に格納するセーブ手段。
【0008】
【作用】この発明におけるセーブ領域部(セーブ・レジ
スタ・ファイル)には、ストア・マルチ命令やロードマ
ルチ命令の実行時に(すなわち、メインルーチンとサブ
ルーチンとの間で制御が移るときに)、プログラム・カ
ウンタあるいは命令実行前の汎用レジスタ・ファイルの
内容がセーブされるので、プログラム障害が発生して汎
用レジスタ・ファイルの内容が無意味な値となっている
場合でも、セーブ領域部(セーブ・レジスタ・ファイ
ル)の内容からプログラム障害解析のための情報を得る
ことができる。
【0009】
【実施例】
実施例1.以下、この発明の一実施例を図について説明
する。図1において1はメイン・メモリ、2はメイン・
メモリ1から読み出した命令を入れておく命令レジス
タ、3は命令デコーダ、4はメイン・メモリ1をアクセ
スするメモリ・アドレス・レジスタ、5は実行する命令
のアドレスを保持するプログラム・カウンタ、6は作業
用の汎用レジスタ・ファイル、7はプログラム・カウン
タ5と汎用レジスタ・ファイル6の内容をセーブしてお
くセーブ・レジスタ・ファイル(セーブ領域部の一例)
である。
【0010】次に実施例の動作について、図2のフロー
チャートに従って説明する。まず、20で、メインルー
チンとなる呼び出し元のプログラムは、セーブ・エリア
・アドレスと戻り先アドレスを汎用レジスタ・ファイル
6の中のセーブ・エリア・アドレス・レジスタにセット
して、サブルーチンに分岐する。サブルーチンの最初の
ステップ21で、メイン・メモリ1の指定されたセーブ
・エリアに、ストア・マルチ命令により、呼び出し元の
汎用レジスタ・ファイル6の内容をセーブする。次に、
22で、セーブ・エリア・アドレスを保持しているセー
ブ・エリア・アドレス・レジスタを除く汎用レジスタを
作業用レジスタとして使用し、サブルーチンの機能を実
行する。
【0011】次に、23で、サブルーチンの機能実行中
に、プログラム障害が発生し、かつセーブ・エリア・ア
ドレス・レジスタが破壊されたものと仮定する。この状
態で呼び出し元のプログラムへの復帰命令が実行される
場合、呼び出し元の汎用レジスタ・ファイル6をセーブ
・エリアからリストアするためのロード・マルチ命令を
実行することになるが、セーブ手段により、24でサブ
ルーチンのリターン時のプログラム・カウンタ5と汎用
レジスタ・ファイル6の内容をセーブ・レジスタ・ファ
イル7に転送した後、汎用レジスタ・ファイル6の内容
を変更するものとする。この時点で汎用レジスタ・ファ
イル6の内容は破壊されることになる。
【0012】一方、メインルーチンでは、25で復帰命
令実行により、誤った戻りアドレスへ分岐がなされて暴
走する結果、26で不正命令の実行によるプログラム・
チェックが発生する。この時のプログラム・カウンタは
不正命令の次のアドレスであり、汎用レジスタ・ファイ
ルの内容は破壊されたセーブ・エリア・アドレス・レジ
スタからロードされた内容あるいはその後の暴走により
生じた内容で無意味なものである。しかしセーブ・レジ
スタ・ファイル7には復帰命令実行前のサブルーチンで
使用していたプログラム・カウンタと汎用レジスタ・フ
ァイル6の内容がセーブされており、障害発生時の有効
な情報が残っている。このセーブ・レジスタ・ファイル
7の内容を解析することにより、障害を発生したサブル
ーチンの特定や障害発生原因を追及することが可能とな
る。
【0013】以上、この実施例では、プログラム・カウ
ンタ、及び汎用レジスタ・ファイルの内容をセーブする
セーブ・レジスタ・ファイルを備え、ロード・マルチ命
令実行時にプログラム・カウンタ、及び汎用レジスタ・
ファイルの内容をセーブ・レジスタ・ファイルに転送す
ることを特徴とするプログラム障害情報収集方式を説明
した。
【0014】実施例2.上記実施例では、図3(a)に
示すように、サブルーチンからメインルーチンへの復帰
命令時にセーブ手段が動作する例を示したが、図3
(b)に示すようにメインルーチンからサブルーチンへ
分岐する場合に、セーブ手段が動作するようにしてもよ
い。また、図3(c)に示すように、サブルーチンへの
分岐時及びサブルーチンからの復帰時の両方ともセーブ
手段を動作させてもよい。
【0015】実施例3.また、上記実施例では、セーブ
・レジスタ・ファイルに、プログラム・カウンタと汎用
レジスタ・ファイルの両方をセーブする例を示したが、
プログラム・カウンタのみ、又は汎用レジスタ・ファイ
ルのみをセーブするようにしてもよい。
【0016】実施例4.なお、上記実施例では、セーブ
・レジスタ・ファイルを備えた場合について説明した
が、メイン・メモリ上の特定の領域を使用することにし
てもよい。また、その他ハードウェアで特別に指定した
レジスタ群であってもかまわず、セーブできる領域とし
てのセーブ領域部があればよい。
【0017】実施例5.また、上記実施例ではセーブ領
域部(セーブ・レジスタ・ファイル)のサイズは1回分
のセーブができなければならない場合を示したが、この
サイズを2倍、3倍としサイクリックに使用することに
より、ひとつ前ばかりでなく2回前、あるいは3回前の
セーブ手段の動作時のセーブ内容も格納して解析できる
ようにしておいてもよい。このようにしておけば、プロ
グラムの暴走中に再びサブルーチンコールされて暴走中
の無意味なセーブが発生しても、それ以前のセーブが残
っている可能性がある。
【0018】なお、この発明に関連する技術として特開
昭63−231629号公報に示された「コンピュータ
システムにおけるスタックチェック方式」と特開昭59
−14058号公報に示された「プログラムデバッグ装
置」がある。前者はサブルーチンのリターンアドレスを
含むスタックを2組持ち、両内容が不一致のときにスタ
ックの内容を調べる技術であり、後者は、サブルーチン
のコール及びリターン命令、レジスタの退避及び復帰命
令を監視していて、不具合が見出されると、CPUに割
込をかけ、退避したレジスタを調べるものである。そし
て、前者、後者ともスタック方式でサブルーチンコール
するマイクロ・コンピュータ等を対象にしている。本発
明はスタック方式ではなく、セーブエリアを主メモリ上
におき、そのポインタをサブルーチンへ渡すような汎用
コンピュータで一般的なサブルーチン方式に関する。さ
らに、前者は2重チェックによりスタック内の破壊をみ
つけるものであるがやはりスタック操作命令の使用ミス
に限られるものであり、2組のスタックの両方とも同じ
値にこわされた場合はエラーが検出できないという欠点
がある。また、後者はPUSH−POP、CALL−R
ETでないまちがった命令の組み合せのみ検出するのに
対し、本発明はこのような制限はない。また、さらに、
関連するものとして、特開昭62−21134号公報に
示された「サブルーチンリンク制御方式」があるが、こ
の方式は、モジュール内のプログラムチェック等で、レ
ジスタの内容に信頼がおけるケースのみ有効と考えら
れ、プログラムの暴走時は、パラメータ・エリアのアド
レスが不明であるため、この方式は暴走に関しては有効
でない。
【0019】
【発明の効果】以上のように、この発明によれば、プロ
グラム障害発生時のプログラムカウンタあるいはレジス
タ・ファイルの内容がセーブ領域部上に残っているの
で、プログラムチェック発生時のプログラム・カウンタ
あるいはレジスタ・ファイルの内容が無意味な値となっ
ている場合にもセーブ領域部から障害解析のための情報
を得ることができる。
【図面の簡単な説明】
【図1】この発明の一実施例によるコンピュータ制御部
を示す図である。
【図2】この発明の一実施例による動作を示すフローチ
ャート図である。
【図3】この発明の他の実施例を示す図である。
【図4】従来のコンピュータ制御部を示す図である。
【符号の説明】
5 プログラム・カウンタ 6 汎用レジスタ・ファイル(レジスタ・ファイルの一
例) 7 セーブ・レジスタ・ファイル(セーブ領域部の一
例)

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 以下の要素を有する、メインルーチンと
    サブルーチン間におけるプログラム障害情報収集方式 (a)実行する命令のアドレスを保持するプログラム・
    カウンタ、 (b)実行中にデータを格納するレジスタを少なくとも
    ひとつ以上有するレジスタ・ファイル、 (c)メインルーチンとサブルーチン間での制御の移動
    に用いる情報を格納するセーブエリア、 (d)上記セーブエリアとは別個に設けられ、少なくと
    も上記プログラム・カウンタとレジスタ・ファイルのい
    ずれか一方の内容を格納できるセーブ領域部、 (e)少なくとも、メインルーチンからサブルーチンへ
    制御が移る場合と、サブルーチンからメインルーチンへ
    制御が移る場合のいずれか一方の場合、少なくとも上記
    プログラム・カウンタとレジスタ・ファイルのいずれか
    一方の内容をセーブ領域部に格納するセーブ手段。
JP3210887A 1991-08-22 1991-08-22 プログラム障害情報収集方式 Pending JPH0553879A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3210887A JPH0553879A (ja) 1991-08-22 1991-08-22 プログラム障害情報収集方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3210887A JPH0553879A (ja) 1991-08-22 1991-08-22 プログラム障害情報収集方式

Publications (1)

Publication Number Publication Date
JPH0553879A true JPH0553879A (ja) 1993-03-05

Family

ID=16596740

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3210887A Pending JPH0553879A (ja) 1991-08-22 1991-08-22 プログラム障害情報収集方式

Country Status (1)

Country Link
JP (1) JPH0553879A (ja)

Similar Documents

Publication Publication Date Title
JP2002268914A (ja) 特権命令の実行を監視する方法
JPH0812616B2 (ja) オペレーティングシステムカーネル用受動回復方法およびシステム
JPH0553879A (ja) プログラム障害情報収集方式
JPH08249206A (ja) スタック領域破壊検出機能付き計算機
JP2570108B2 (ja) ソフトウェアデバッグ方法
CA1223079A (en) Data processor having selective breakpoint capability with minimal overhead
JP2786215B2 (ja) 再開処理制御方式
JP3183982B2 (ja) ディジタル制御装置
JPH05204680A (ja) 情報処理装置の誤動作防止方式
WO1990005951A1 (en) Method of handling unintended software interrupt exceptions
JP2004013240A (ja) 計算機システム
JPH07210421A (ja) スレッド環境におけるデバッグ方法
JPH02244345A (ja) 情報処理装置
JPH0651996A (ja) 情報処理装置
JPH09160800A (ja) エミュレータ
JPH0135369B2 (ja)
JPH06324911A (ja) プログラム実行の中断方法
JPS6270947A (ja) デバグ割込み制御方式
JP2000066923A (ja) エミュレータにおける全命令トレースの制御方法
JPH10161904A (ja) 複数言語対応のデバッグ装置およびデバッグ方法
JPH08202584A (ja) トラップ機能を有するプロセッサ装置
JPH04365145A (ja) メモリ障害処理方法
JPH064356A (ja) ソフトウエアの異常動作検出方式
JPH0520101A (ja) 演算レジスタ情報監視方式
JPH0527963A (ja) 異種の浮動小数点演算命令の同時サポート方法