JPH01214934A - プログラムの間接再帰呼出し検出方式 - Google Patents
プログラムの間接再帰呼出し検出方式Info
- Publication number
- JPH01214934A JPH01214934A JP4174488A JP4174488A JPH01214934A JP H01214934 A JPH01214934 A JP H01214934A JP 4174488 A JP4174488 A JP 4174488A JP 4174488 A JP4174488 A JP 4174488A JP H01214934 A JPH01214934 A JP H01214934A
- Authority
- JP
- Japan
- Prior art keywords
- program
- return address
- address
- area
- 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
Links
- 238000001514 detection method Methods 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 7
- 238000011423 initialization method Methods 0.000 claims 1
- 239000000470 constituent Substances 0.000 abstract description 8
- 230000002159 abnormal effect Effects 0.000 abstract description 2
- 238000003745 diagnosis Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はプログラムの間接再帰呼出し検出方式に関し、
特にプログラムの再帰呼出しが禁止されているデータ処
理システムにおけるプログラムの間接再帰呼出し検出方
式に関する。
特にプログラムの再帰呼出しが禁止されているデータ処
理システムにおけるプログラムの間接再帰呼出し検出方
式に関する。
従来、プログラムの再帰呼出しが禁止されているデータ
処理システムにおいてプログラムの再帰呼出しの検出を
行うプログラムの再帰呼出し検出方式は、プログラムの
翻訳時にプログラムの直接再帰呼出しく特定のプログラ
ム内で行われる当該特定のプログラムの呼出し)を検出
しエラー診断(プログラムの構造にエラーがあることを
プログラム作成者等に通知しプログラムの修正を促すこ
と)を行うだけであった。
処理システムにおいてプログラムの再帰呼出しの検出を
行うプログラムの再帰呼出し検出方式は、プログラムの
翻訳時にプログラムの直接再帰呼出しく特定のプログラ
ム内で行われる当該特定のプログラムの呼出し)を検出
しエラー診断(プログラムの構造にエラーがあることを
プログラム作成者等に通知しプログラムの修正を促すこ
と)を行うだけであった。
プログラムの間接再帰呼出しく特定のプログラムにより
呼び出された他のプログラム内で行われる当該特定のプ
ログラムの呼出し)については、あるプログラムの翻訳
時には他のプログラムの状態が分からないために上述の
プログラムの再帰呼出し検出方式では検出することがで
きなかった(翻訳されたプログラムが実行可能プログラ
ムの1つの構成ルーチンとして実行される際にもプログ
ラムの間接再帰呼出しを検出して対処することはできな
かった)。
呼び出された他のプログラム内で行われる当該特定のプ
ログラムの呼出し)については、あるプログラムの翻訳
時には他のプログラムの状態が分からないために上述の
プログラムの再帰呼出し検出方式では検出することがで
きなかった(翻訳されたプログラムが実行可能プログラ
ムの1つの構成ルーチンとして実行される際にもプログ
ラムの間接再帰呼出しを検出して対処することはできな
かった)。
上述した従来のプログラムの再帰呼出し検出方式では、
プログラムの翻訳時にプログラムの直接再帰呼出しを検
出してエラー診断を行うだけで、プログラムの間接再帰
呼出しの検出については翻訳時および実行時を通じて行
うことができないので、プログラム作成者が誤って間接
再帰呼出しを行うプログラムを作成した場合にはそのプ
ログラムを構成ルーチンとする実行可能プログラムの実
行時に無限ループに陥ってしまうという欠点がある。
プログラムの翻訳時にプログラムの直接再帰呼出しを検
出してエラー診断を行うだけで、プログラムの間接再帰
呼出しの検出については翻訳時および実行時を通じて行
うことができないので、プログラム作成者が誤って間接
再帰呼出しを行うプログラムを作成した場合にはそのプ
ログラムを構成ルーチンとする実行可能プログラムの実
行時に無限ループに陥ってしまうという欠点がある。
本発明の目的は、上述の点に鑑み、間接再帰呼出しを行
うプログラムの実行時にその間接再帰呼出しを検出し、
間接再帰呼出しを行うそのプログラムを構成ルーチンと
する実行可能プログラムの実行時に無限ループに陥るこ
とを防止するプログラムの再帰呼出し検出方式(プログ
ラムの間接再帰呼出し検出方式)を提供することにある
。
うプログラムの実行時にその間接再帰呼出しを検出し、
間接再帰呼出しを行うそのプログラムを構成ルーチンと
する実行可能プログラムの実行時に無限ループに陥るこ
とを防止するプログラムの再帰呼出し検出方式(プログ
ラムの間接再帰呼出し検出方式)を提供することにある
。
本発明のプログラムの間接再帰呼出し検出方式は、プロ
グラムの再帰呼出しが禁止されておりプログラム割込み
命令を有するデータ処理システムにおいて、メモリへの
プログラムのロード時にこのプログラム内の戻りアドレ
ス退避領域を上値で初期化する上値初期化手段と、プロ
グラム入口点において前記戻りアドレス退避領域の内容
が上値であるか否かを識別する前記プログラム内の上値
識別手段と、この上値識別手段によ乞識別で前記戻りア
ドレス退避領域の内容が上値ではない場合にプログラム
割込み命令を実行して前記プログラムを異常終了させる
前記プログラム内の割込み命令実行手段と、前記上値識
別手段による識別で前記戻りアドレス退避領域の内容が
上値である場合に呼出し側プログラムから渡された呼出
し側プログラムへの戻りアドレスを前記戻りアドレス退
避領域に格納する前記プログラム内の戻りアドレス格納
手段と、前記プログラムにおける所定の処理の実行後に
前記戻りアドレス退避領域の内容を前記プログラム内の
一時アドレス退避領域に複写する前記プログラム内のア
ドレス領域複写手段と、このアドレス領域複写手段によ
る複写処理で前記戻りアドレス退避領域の内容を前記一
時アドレス退避領域に格納した後に前記戻りアドレス退
避領域に上値を設定する前記プログラム内の上値設定手
段と、前記一時アドレス退M領域に格納されている呼出
し側プログラム中の戻りアドレスへの分岐を行う前記プ
ログラム内の戻りアドレス分岐手段とを有する。
グラムの再帰呼出しが禁止されておりプログラム割込み
命令を有するデータ処理システムにおいて、メモリへの
プログラムのロード時にこのプログラム内の戻りアドレ
ス退避領域を上値で初期化する上値初期化手段と、プロ
グラム入口点において前記戻りアドレス退避領域の内容
が上値であるか否かを識別する前記プログラム内の上値
識別手段と、この上値識別手段によ乞識別で前記戻りア
ドレス退避領域の内容が上値ではない場合にプログラム
割込み命令を実行して前記プログラムを異常終了させる
前記プログラム内の割込み命令実行手段と、前記上値識
別手段による識別で前記戻りアドレス退避領域の内容が
上値である場合に呼出し側プログラムから渡された呼出
し側プログラムへの戻りアドレスを前記戻りアドレス退
避領域に格納する前記プログラム内の戻りアドレス格納
手段と、前記プログラムにおける所定の処理の実行後に
前記戻りアドレス退避領域の内容を前記プログラム内の
一時アドレス退避領域に複写する前記プログラム内のア
ドレス領域複写手段と、このアドレス領域複写手段によ
る複写処理で前記戻りアドレス退避領域の内容を前記一
時アドレス退避領域に格納した後に前記戻りアドレス退
避領域に上値を設定する前記プログラム内の上値設定手
段と、前記一時アドレス退M領域に格納されている呼出
し側プログラム中の戻りアドレスへの分岐を行う前記プ
ログラム内の戻りアドレス分岐手段とを有する。
本発明のプログラムの間接再帰呼出し検出方式では、上
値初期化手段がメモリへのプログラムのロード時にプロ
グラム内の戻りアドレス退避領域を上値で初期化し、プ
ログラム内の上値識別手段がプログラム入口点において
戻りアドレス退避領域の内容が上値であるか否かを識別
し、プログラム内の割込み命令実行手段が上値識別手段
による識別で戻りアドレス退避領域の内容が上値ではな
い場合にプログラム割込み命令を実行してプログラムを
異常終了させ、プログラム内の戻りアドレス格納手段が
上値識別手段による識別で戻りアドレス退避領域の内容
が上値である場合に呼出し側プログラムから渡された呼
出し側プログラムへの戻りアドレスを戻りアドレス退避
領域に格納し、プログラム内のアドレス領域複写手段が
プログラムにおける所定の処理の実行後に戻りアドレス
退避領域の内容をプログラム内の一時アドレス退避領域
に複写し、プログラム内の上値設定手段がアドレス領域
複写手段による複写処理で戻りアドレス退避領域の内容
を一時アドレス退避領域に格納した後に戻りアドレス退
避領域に上値を設定し、プログラム内の戻りアドレス分
岐手段が一時アドレス退避領域に格納されている呼出し
側プログラム中の戻りアドレスへの分岐を行う。
値初期化手段がメモリへのプログラムのロード時にプロ
グラム内の戻りアドレス退避領域を上値で初期化し、プ
ログラム内の上値識別手段がプログラム入口点において
戻りアドレス退避領域の内容が上値であるか否かを識別
し、プログラム内の割込み命令実行手段が上値識別手段
による識別で戻りアドレス退避領域の内容が上値ではな
い場合にプログラム割込み命令を実行してプログラムを
異常終了させ、プログラム内の戻りアドレス格納手段が
上値識別手段による識別で戻りアドレス退避領域の内容
が上値である場合に呼出し側プログラムから渡された呼
出し側プログラムへの戻りアドレスを戻りアドレス退避
領域に格納し、プログラム内のアドレス領域複写手段が
プログラムにおける所定の処理の実行後に戻りアドレス
退避領域の内容をプログラム内の一時アドレス退避領域
に複写し、プログラム内の上値設定手段がアドレス領域
複写手段による複写処理で戻りアドレス退避領域の内容
を一時アドレス退避領域に格納した後に戻りアドレス退
避領域に上値を設定し、プログラム内の戻りアドレス分
岐手段が一時アドレス退避領域に格納されている呼出し
側プログラム中の戻りアドレスへの分岐を行う。
次に、本発明について図面を参照して説明する。
第1図は、本発明のプログラムの間接再帰呼出し検出方
式の一実施例の構成を示すブロック図である。本実施例
のプログラムの間接再帰呼出し検出方式は、戻りアドレ
ス1と、上値識別手段2と、戻りアドレス格納手段3と
、割込み命令実行手段4と、プログラム処理手段5と、
アドレス領域複写手段6と、上値設定手段7と、戻りア
ドレス分岐手段8と、戻りアドレス退避領域9と、一時
アドレス退避領域10と、プログラム入口点11と、プ
ログラム終了点12と、上値初期化手段13とを含んで
構成されている。
式の一実施例の構成を示すブロック図である。本実施例
のプログラムの間接再帰呼出し検出方式は、戻りアドレ
ス1と、上値識別手段2と、戻りアドレス格納手段3と
、割込み命令実行手段4と、プログラム処理手段5と、
アドレス領域複写手段6と、上値設定手段7と、戻りア
ドレス分岐手段8と、戻りアドレス退避領域9と、一時
アドレス退避領域10と、プログラム入口点11と、プ
ログラム終了点12と、上値初期化手段13とを含んで
構成されている。
第1図中の2〜12の符号で示される構成要素は、翻訳
処理および連係編集処理を経て生成された実行可能プロ
グラム(図示せず)の構成ルーチンの1つであるプログ
ラム100に含まれている(プログラム100の翻訳時
に生成される)。
処理および連係編集処理を経て生成された実行可能プロ
グラム(図示せず)の構成ルーチンの1つであるプログ
ラム100に含まれている(プログラム100の翻訳時
に生成される)。
次に、このように構成された本実施例のプログラムの間
接再帰呼出し検出方式の動作について説明する。
接再帰呼出し検出方式の動作について説明する。
本実施例のプログラムの間接再帰呼出し検出方式が適用
されるデータ処理システムにおけるプログラム100の
メモリ (図示せず)へのロード時には、戻りアドレス
退避領域9が上値(いずれのアドレ、スも指示しない値
。例えば、NULL値)となるようにO3(Opera
ting System、図示せず)等で実現される
上値初期化手段13によって初期化される。
されるデータ処理システムにおけるプログラム100の
メモリ (図示せず)へのロード時には、戻りアドレス
退避領域9が上値(いずれのアドレ、スも指示しない値
。例えば、NULL値)となるようにO3(Opera
ting System、図示せず)等で実現される
上値初期化手段13によって初期化される。
このようにしてメモリにロードされたプログラム100
の呼出し側プログラム(図示せず。実行可能プログラム
を構成する他のプログラムやO3)からの呼出しは、戻
りアドレス1 (プログラム100の所定の処理が終了
したときに復帰する呼出し側プログラム中のアドレス)
を伴−たプログラム入口点11の呼出しにより行われる
。
の呼出し側プログラム(図示せず。実行可能プログラム
を構成する他のプログラムやO3)からの呼出しは、戻
りアドレス1 (プログラム100の所定の処理が終了
したときに復帰する呼出し側プログラム中のアドレス)
を伴−たプログラム入口点11の呼出しにより行われる
。
プログラム入口点11においては、上値識別手段2が起
動される。
動される。
上値識別手段2では、戻りアドレス退避領域9の内容が
上値であるか否かが識別される。
上値であるか否かが識別される。
この識別で戻りアドレス退避領域9の内容が上値である
場合には、戻りアドレス格納手段3が起動される。
場合には、戻りアドレス格納手段3が起動される。
戻りアドレス格納手段3では、プログラム入口点工1が
呼び出されたと−きに渡された戻りアドレス1が戻りア
ドレス退避領域9に格納される。
呼び出されたと−きに渡された戻りアドレス1が戻りア
ドレス退避領域9に格納される。
次に、プログラム処理手段5に制御が渡され、所定の処
理が実行され、その実行後にアドレス領域複写手段6が
起動される。
理が実行され、その実行後にアドレス領域複写手段6が
起動される。
アドレス領域複写手段6では、戻りアドレス退避領域9
の内容が一時アドレス退避領域1oに複写されて格納さ
れる。
の内容が一時アドレス退避領域1oに複写されて格納さ
れる。
次に、上値設定手段7が起動され、戻りアドレス退避領
域9に上値が設定される。
域9に上値が設定される。
さらに、戻りアドレス分岐手段8が起動され、一時アド
レス退避領域10に格納されている戻りアドレス1が取
り出され、呼出し側プログラム中の戻りアドレスlへの
分岐(復帰)が行ゎる。
レス退避領域10に格納されている戻りアドレス1が取
り出され、呼出し側プログラム中の戻りアドレスlへの
分岐(復帰)が行ゎる。
上値識別手段2における戻りアドレス退避領域9の内容
が上値であるが否かの識別において戻りアドレス退避領
域9の内容が上値ではない場合(プログラム処理手段5
における所定の処理が終了して上値設定手段7により上
値の設定が行われる前にプログラム処理手段5による他
のプログラムの呼出しを介して当該他のプログラムから
再びプログラム100の呼出しく間接再帰呼出し)が行
われたために戻りアドレス退避領域9の内容が上値では
ない状態となっている。なお、直接再帰呼出しについて
はプログラム100の翻訳時にエラー診断が行われてい
るので、発生する再帰呼出しは間接再帰呼出しのみであ
る)には、プログラム100の間接再帰呼出しが行われ
たものと判定され、割込み命令実行手段4が起動される
。
が上値であるが否かの識別において戻りアドレス退避領
域9の内容が上値ではない場合(プログラム処理手段5
における所定の処理が終了して上値設定手段7により上
値の設定が行われる前にプログラム処理手段5による他
のプログラムの呼出しを介して当該他のプログラムから
再びプログラム100の呼出しく間接再帰呼出し)が行
われたために戻りアドレス退避領域9の内容が上値では
ない状態となっている。なお、直接再帰呼出しについて
はプログラム100の翻訳時にエラー診断が行われてい
るので、発生する再帰呼出しは間接再帰呼出しのみであ
る)には、プログラム100の間接再帰呼出しが行われ
たものと判定され、割込み命令実行手段4が起動される
。
割込み命令実行手段4では、プログラム終了点12に制
御が移されてプログラム100め異常終了(この異常終
了により、プログラム100や呼出し側プログラム(O
3を除く)を構成ルーチンとする実行可能プログラム全
体の実行が終了する)が行われる。これにより、プログ
ラム100を構成ルーチンとする実行可能プログラムが
無限ループに陥ることが回避される。
御が移されてプログラム100め異常終了(この異常終
了により、プログラム100や呼出し側プログラム(O
3を除く)を構成ルーチンとする実行可能プログラム全
体の実行が終了する)が行われる。これにより、プログ
ラム100を構成ルーチンとする実行可能プログラムが
無限ループに陥ることが回避される。
以上説明したように本発明は、プログラムの再帰呼出し
が禁止されているデータ処理システムにおいてプログラ
ムの間接再帰呼出しの検出をプログラムの実行時に可能
とすることにより、プログラムの間接再帰呼出しを行う
プログラムを実行してもそのプログラムを構成ルーチン
とする実行可能プログラムが無限ループに陥ることを防
止できるという効果がある。
が禁止されているデータ処理システムにおいてプログラ
ムの間接再帰呼出しの検出をプログラムの実行時に可能
とすることにより、プログラムの間接再帰呼出しを行う
プログラムを実行してもそのプログラムを構成ルーチン
とする実行可能プログラムが無限ループに陥ることを防
止できるという効果がある。
第1図は本発明の一実施例の構成を示すブロック図であ
る。 図において、 1・・・戻りアドレス、 2・・・上値識別手段、 3・・・戻りアドレス格納手段、 4・・・割込み命令実行手段、 5・・・プログラム処理手段、 6・・・アドレス領域複写手段、 7・・・上値設定手段、 8・・・戻りアドレス分岐手段、 9・・・戻りアドレス退避領域、 10・・・一時アドレス退避領域、 11・・・プログラム入口点、 12・・・プログラム終了点、 13・・・上値初期化手段、 100 ・・プログラムである。
る。 図において、 1・・・戻りアドレス、 2・・・上値識別手段、 3・・・戻りアドレス格納手段、 4・・・割込み命令実行手段、 5・・・プログラム処理手段、 6・・・アドレス領域複写手段、 7・・・上値設定手段、 8・・・戻りアドレス分岐手段、 9・・・戻りアドレス退避領域、 10・・・一時アドレス退避領域、 11・・・プログラム入口点、 12・・・プログラム終了点、 13・・・上値初期化手段、 100 ・・プログラムである。
Claims (1)
- 【特許請求の範囲】 プログラムの再帰呼出しが禁止されておりプログラム割
込み命令を有するデータ処理システムにおいて、 メモリへのプログラムのロード時にこのプログラム内の
戻りアドレス退避領域を空値で初期化する空値初期化手
段と、 プログラム入口点において前記戻りアドレス退避領域の
内容が空値であるか否かを識別する前記プログラム内の
空値識別手段と、 この空値識別手段による識別で前記戻りアドレス退避領
域の内容が空値ではない場合にプログラム割込み命令を
実行して前記プログラムを異常終了させる前記プログラ
ム内の割込み命令実行手段と、 前記空値識別手段による識別で前記戻りアドレス退避領
域の内容が空値である場合に呼出し側プログラムから渡
された呼出し側プログラムへの戻りアドレスを前記戻り
アドレス退避領域に格納する前記プログラム内の戻りア
ドレス格納手段と、前記プログラムにおける所定の処理
の実行後に前記戻りアドレス退避領域の内容を前記プロ
グラム内の一時アドレス退避領域に複写する前記プログ
ラム内のアドレス領域複写手段と、 このアドレス領域複写手段による複写処理で前記戻りア
ドレス退避領域の内容を前記一時アドレス退避領域に格
納した後に前記戻りアドレス退避領域に空値を設定する
前記プログラム内の空値設定手段と、 前記一時アドレス退避領域に格納されている呼出し側プ
ログラム中の戻りアドレスへの分岐を行う前記プログラ
ム内の戻りアドレス分岐手段と、を有することを特徴と
するプログラムの間接再帰呼出し検出方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4174488A JPH01214934A (ja) | 1988-02-23 | 1988-02-23 | プログラムの間接再帰呼出し検出方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4174488A JPH01214934A (ja) | 1988-02-23 | 1988-02-23 | プログラムの間接再帰呼出し検出方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01214934A true JPH01214934A (ja) | 1989-08-29 |
Family
ID=12616933
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4174488A Pending JPH01214934A (ja) | 1988-02-23 | 1988-02-23 | プログラムの間接再帰呼出し検出方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH01214934A (ja) |
-
1988
- 1988-02-23 JP JP4174488A patent/JPH01214934A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0402856B1 (en) | Instruction execution control system | |
| US4679138A (en) | Microsequencer in a data processing system using stack storage for controlling the sequencing of microroutines | |
| JP4275451B2 (ja) | 不正メモリアクセス検知方法及びそのプログラム | |
| JPH09128267A (ja) | データ処理装置およびデータ処理方法 | |
| EP0417916B1 (en) | Procedure state descriptor system for digital data processors | |
| JPH01214934A (ja) | プログラムの間接再帰呼出し検出方式 | |
| JPH0731617B2 (ja) | プログラム暴走検知方法 | |
| JPH01286029A (ja) | マイクロプログラムのパッチ方式 | |
| JPH09288595A (ja) | 演算処理装置 | |
| JPS62137627A (ja) | メモリダンプ方式 | |
| JPS5842891B2 (ja) | メイレイセイギヨホウシキ | |
| JPH02159619A (ja) | 正常終了出口呼出し方式 | |
| JPS638841A (ja) | 割込み受取り装置 | |
| JPH03240831A (ja) | 割り込み処理方式 | |
| JPH059815B2 (ja) | ||
| JP2978658B2 (ja) | プログラム開発支援装置 | |
| JPH04177535A (ja) | 割込み要因発生時での処理制御方式 | |
| JPS59103146A (ja) | 動作モ−ド表示装置 | |
| JPS604492B2 (ja) | 計算機 | |
| JPH0546444A (ja) | ログ機能付きデバツカ | |
| JPH02100720A (ja) | 実行許可付き命令方式 | |
| JPH01185729A (ja) | オーバレイ構造プログラム実行方式 | |
| JPH06332720A (ja) | シグナル制御方法 | |
| JPS6259818B2 (ja) | ||
| JPH0610793B2 (ja) | プログラム暴走検出方法 |