JPS6368935A - マイクロプロセツサ暴走防止方式 - Google Patents
マイクロプロセツサ暴走防止方式Info
- Publication number
- JPS6368935A JPS6368935A JP61213218A JP21321886A JPS6368935A JP S6368935 A JPS6368935 A JP S6368935A JP 61213218 A JP61213218 A JP 61213218A JP 21321886 A JP21321886 A JP 21321886A JP S6368935 A JPS6368935 A JP S6368935A
- Authority
- JP
- Japan
- Prior art keywords
- address
- subroutine
- stack
- program
- return
- 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
- 238000011084 recovery Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000002265 prevention Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 1
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概要〕
サブルーチン・コール/リターンを行うマイクロプロセ
ッサに於いて、特定のアドレスを格納するリセット・ベ
クトルを設け、す・ブルーチン・リターンを実行した時
に使用したスタ・ツクに前記特定のアドレスをロードす
ることによりプログラムの暴走を防止する。
ッサに於いて、特定のアドレスを格納するリセット・ベ
クトルを設け、す・ブルーチン・リターンを実行した時
に使用したスタ・ツクに前記特定のアドレスをロードす
ることによりプログラムの暴走を防止する。
本発明はマイクロプロセッサ暴走防止方式に関するもの
である。
である。
一般にマイクロプロセッサがプログラムを実行している
時、暴走が起きることがあることは周知の通りであるが
、此の暴走が発生する原因には色々ある。然し経験的に
暴走の発生は、サブルーチン・コール(call)、又
はサブルーチン・リターン(return)を行った時
点で起きることが多い。
時、暴走が起きることがあることは周知の通りであるが
、此の暴走が発生する原因には色々ある。然し経験的に
暴走の発生は、サブルーチン・コール(call)、又
はサブルーチン・リターン(return)を行った時
点で起きることが多い。
第3図は従来のサブルーチン・コール/リターンの説明
図である。
図である。
第3図に示す様に今仮にプログラムAがa00番地ら始
まり、C5゜。番地で終わるとする。此の場合、a00
番地らa、。。番地まで直線的に流れることば先づなく
、普通第3図に示す様に、例えばC16゜番地でサブル
ーチンBをコールし、以後サブルーチンBのb00番地
ら実行し、サブルーチンBのblo番地で更にサブルー
チンCをコールし、以後サブルーチンCを其のC0番地
から実行し、cbo番地迄行ってプログラムCが終わる
と、再びサブルーチン・リターンを行ってプログラムB
をb1111番地実行し、b、。番地迄行ってプログラ
ムBが終わると、再びサブルーチン・リターンを行って
プログラムAをal。1番地から実行し、a、。。番地
で終わる。
まり、C5゜。番地で終わるとする。此の場合、a00
番地らa、。。番地まで直線的に流れることば先づなく
、普通第3図に示す様に、例えばC16゜番地でサブル
ーチンBをコールし、以後サブルーチンBのb00番地
ら実行し、サブルーチンBのblo番地で更にサブルー
チンCをコールし、以後サブルーチンCを其のC0番地
から実行し、cbo番地迄行ってプログラムCが終わる
と、再びサブルーチン・リターンを行ってプログラムB
をb1111番地実行し、b、。番地迄行ってプログラ
ムBが終わると、再びサブルーチン・リターンを行って
プログラムAをal。1番地から実行し、a、。。番地
で終わる。
此のように何回もサブルーチン・コール/リターンを行
いながらプログラムを実行するのが普通である。
いながらプログラムを実行するのが普通である。
第4図は従来のサブルーチン・コール/リターンの動作
の一例を説明する図である。
の一例を説明する図である。
図中、1はスタック、2はプログラム・カウンタ、3は
スタック・ポインタ、4はバス、5はメモリ、10は制
御部である。尚以下全図を通じ同一記号は同一対象物を
表す。
スタック・ポインタ、4はバス、5はメモリ、10は制
御部である。尚以下全図を通じ同一記号は同一対象物を
表す。
スタック1は次に取り出されるべき番地が、記憶装置内
にある番地の中で最も新しく記憶されたものであるよう
な方法、即ち、後入れ先出し方式(LIFO)の記憶装
置である。
にある番地の中で最も新しく記憶されたものであるよう
な方法、即ち、後入れ先出し方式(LIFO)の記憶装
置である。
又スタック・ポインタ3はアンプ・ダウン形のカウンタ
であり、スタックlに最も新しく格納された番地の格納
場所を示す。
であり、スタックlに最も新しく格納された番地の格納
場所を示す。
プログラム・カウンタ2はロード可能なアンプ形のカウ
ンタである。
ンタである。
今前述の例に従ってスタック1、プログラム・カウンタ
2、及びスタック・ポインタ3の動作を説明する。
2、及びスタック・ポインタ3の動作を説明する。
尚各種プログラムは夫々メモリ5内の指定された番地に
格納されている。例えばプログラムAはメモリ5のa0
0番地らa soo番地迄に、プログラムBはメモリ5
のb00番地らb5゜番地迄に、プログラムCはメモリ
5のC0番地から06゜番地迄に夫々格納されている。
格納されている。例えばプログラムAはメモリ5のa0
0番地らa soo番地迄に、プログラムBはメモリ5
のb00番地らb5゜番地迄に、プログラムCはメモリ
5のC0番地から06゜番地迄に夫々格納されている。
最初制御部10はプログラム・カウンタ2にa。
番地をロードすることによりプログラムAが動作゛を開
始し、プログラム・カウンタ2の値がao、a+ 、a
= ・・・・と増えるに従いプログラムAが進行し、
al。。番地でサブルーチンBをコールする。
始し、プログラム・カウンタ2の値がao、a+ 、a
= ・・・・と増えるに従いプログラムAが進行し、
al。。番地でサブルーチンBをコールする。
■先づスタック・ポインタ3が示すアドレスのスタック
・エリア(スタック1内に在る)に、al。1番地を記
入する。尚最初スタック・ポインタ3は“0”とセット
されている。■の操作はサブルーチンBを終了した時、
戻る先を指定して置く為である。
・エリア(スタック1内に在る)に、al。1番地を記
入する。尚最初スタック・ポインタ3は“0”とセット
されている。■の操作はサブルーチンBを終了した時、
戻る先を指定して置く為である。
■次にスタック・ポインタ3を+1だけインフレメンし
て、01″とする。
て、01″とする。
以上の操作(サブルーチン・コール)が終了した後、プ
ログラム・カウンタ2にす。番地をロードしてプログラ
ムBをb00番地ら実行する。
ログラム・カウンタ2にす。番地をロードしてプログラ
ムBをb00番地ら実行する。
サブルーチンBのbl。番地で更にサブルーチンCをコ
ールする場合にも同様に、 ■先づスタック・ポインタ3が示すアドレスのスタック
・エリアに、b1111番地入する。
ールする場合にも同様に、 ■先づスタック・ポインタ3が示すアドレスのスタック
・エリアに、b1111番地入する。
■次にスタック・ポインタ3を+1だけインフレメンし
て、2″とする。
て、2″とする。
以上の操作(サブルーチン・コール)が終了した後、プ
ログラム・カウンタ2にC6番地をロードしてプログラ
ムCをC8番地から実行する。
ログラム・カウンタ2にC6番地をロードしてプログラ
ムCをC8番地から実行する。
C6゜番地迄行ってプログラムCが終わると、サブルー
チン・リターンを行う。
チン・リターンを行う。
■先づスタック・ポインタ3が示すアドレスのスタック
・エリアに格納されているサブルーチンBのb1111
番地ログラム・カウンタ2にロードする。
・エリアに格納されているサブルーチンBのb1111
番地ログラム・カウンタ2にロードする。
0次にスタック・ポインタ3を−1だけデクレメンして
、1″とする。
、1″とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンBのb1111番地実行し、b5゜番地迄
行ってプログラムBが終わると、再びサブルーチン・リ
ターンを行う。
サブルーチンBのb1111番地実行し、b5゜番地迄
行ってプログラムBが終わると、再びサブルーチン・リ
ターンを行う。
■先づスタック・ポインタ3が示すアドレスのスタック
・エリアに格納されているサブルーチンAのal。1番
地をプログラム・カウンタ2にロードする。
・エリアに格納されているサブルーチンAのal。1番
地をプログラム・カウンタ2にロードする。
■次にスタック・ポインタ3を−1だけデクレメンして
、0″とする。
、0″とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンAの2101番地から実行し、a、。。番
地迄行ってプログラムAを終わる。
サブルーチンAの2101番地から実行し、a、。。番
地迄行ってプログラムAを終わる。
然しなから何回もサブルーチン・コール/リターンを繰
り返すうちに、スタック1のスタック・エリアに過去に
使用した不要なデータ等が残っている等の理由によりプ
ログラムの暴走が起きる可能性がある。
り返すうちに、スタック1のスタック・エリアに過去に
使用した不要なデータ等が残っている等の理由によりプ
ログラムの暴走が起きる可能性がある。
本発明の目的は上記原因によるプログラムの暴走を防止
することである。
することである。
c問題点を解決するための手段〕
上記問題点は第1図の原理図に示す様にサブルーチン・
リターンを実行する時戻るべきプログラムのアドレスを
格納するスタック1、スタック1内に最も新しく格納さ
れた該アドレスの格納位置を指定するスタックポインタ
3、及びプログラム・カウンタ2を有するマイクロプロ
セッサに於いて、特定のアドレスを格納するりセント・
ベクトル6を設けることにより解決される。
リターンを実行する時戻るべきプログラムのアドレスを
格納するスタック1、スタック1内に最も新しく格納さ
れた該アドレスの格納位置を指定するスタックポインタ
3、及びプログラム・カウンタ2を有するマイクロプロ
セッサに於いて、特定のアドレスを格納するりセント・
ベクトル6を設けることにより解決される。
本発明に依るとサブルーチン・リターンを実行した時に
使用したスタック1に、リセット・ベクトル6に格納さ
れている前記特定のアドレスをロードするので、若しサ
ブルーチン・コール/リターンに際して暴走が起きた場
合には外部リセットがかかった状態と同様な状態となり
、暴走状態からの自動復旧が可能となる。
使用したスタック1に、リセット・ベクトル6に格納さ
れている前記特定のアドレスをロードするので、若しサ
ブルーチン・コール/リターンに際して暴走が起きた場
合には外部リセットがかかった状態と同様な状態となり
、暴走状態からの自動復旧が可能となる。
第2図は本発明に依るマイクロプロセッサ暴走防止方式
の一実施例を示す図である。
の一実施例を示す図である。
図中、6はリセット・ベクトルである。
本発明に依るとスタックlにリセット・ベクトル6を付
加する。
加する。
本発明に於けるサブルーチン・コールは、従来のサブル
ーチン・コールと同じ動作を行う。
ーチン・コールと同じ動作を行う。
然しサブルーチン・リターンでは、スタック・ポインタ
3が示すアドレスのスタック・エリアに格納されている
番地(戻るべきサブルーチンの再開番地)をプログラム
・カウンタ2にロードした後の場所に、即ち、スタック
・ポインタ2が示すアドレスのスタック・エリアに、リ
セット・ベクトル6に格納されている値を書込む。
3が示すアドレスのスタック・エリアに格納されている
番地(戻るべきサブルーチンの再開番地)をプログラム
・カウンタ2にロードした後の場所に、即ち、スタック
・ポインタ2が示すアドレスのスタック・エリアに、リ
セット・ベクトル6に格納されている値を書込む。
リセット・ベクトル6に格納されている値は、プログラ
ムAの開始番地、aoでも良く、又オール0でも良い。
ムAの開始番地、aoでも良く、又オール0でも良い。
スタック・エリアにリセット・ベクトル6に格納されて
いる値を書込んだ後、スタック・ポインり3を−1だけ
デクレメンする。
いる値を書込んだ後、スタック・ポインり3を−1だけ
デクレメンする。
此の様にサブルーチン・リターンを行う時、スタック・
ポインタ3が示すアドレスのスタック・エリアに、リセ
ット・ベクトル6に格納されている値を書込むことによ
り、使用済の全てのスタック・エリアにはリセット・ベ
クトル値が入っていることになり、万一プログラム上で
考慮されていないスタックを参照してサブルーチン・リ
ターンが行われても自動的に外部リセットがかかったと
同様にプログラムが初期化され、此のことにより暴走を
検出し、復旧することが可能となる。
ポインタ3が示すアドレスのスタック・エリアに、リセ
ット・ベクトル6に格納されている値を書込むことによ
り、使用済の全てのスタック・エリアにはリセット・ベ
クトル値が入っていることになり、万一プログラム上で
考慮されていないスタックを参照してサブルーチン・リ
ターンが行われても自動的に外部リセットがかかったと
同様にプログラムが初期化され、此のことにより暴走を
検出し、復旧することが可能となる。
尚前述した従来の技術の項で挙げた例に就いて述べると
、サブルーチン・リターンの場合、■゛先づスタック・
ポインタ3が示すアドレスのスタック・エリアに格納さ
れてい・るサブルーチンBのb11番地をプログラム・
カウンタ2にロードする。
、サブルーチン・リターンの場合、■゛先づスタック・
ポインタ3が示すアドレスのスタック・エリアに格納さ
れてい・るサブルーチンBのb11番地をプログラム・
カウンタ2にロードする。
■゛スタツクポインタ3が示すアドレスのスタック・エ
リア(令名サブルーチンBのb11番地が格納されてい
たスタック・エリア)に、リセソト・ベクトル6に格納
されている値を書込む。
リア(令名サブルーチンBのb11番地が格納されてい
たスタック・エリア)に、リセソト・ベクトル6に格納
されている値を書込む。
■”次にスタック・ポインタ3を−lだけデクレメンし
て、1″とする。
て、1″とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンBのb11番地から実行し、b、。番地迄
行ってプログラムBが終わると、再びサブルーチン・リ
ターンを行う。
サブルーチンBのb11番地から実行し、b、。番地迄
行ってプログラムBが終わると、再びサブルーチン・リ
ターンを行う。
■°先づスタック・ポインタ3が示すアドレスのスタッ
ク・エリアに格納されているサブルーチンAのal。3
番地をプログラム・カウンタ2にロードする。
ク・エリアに格納されているサブルーチンAのal。3
番地をプログラム・カウンタ2にロードする。
■゛スタツクポインタ3が示すアドレスのスタック・エ
リア(令名サブルーチンAのal。6番地が格納されて
いたスタック・エリア)に、リセット・ベクトル6に格
納されている値を書込む。
リア(令名サブルーチンAのal。6番地が格納されて
いたスタック・エリア)に、リセット・ベクトル6に格
納されている値を書込む。
[相]゛次にスタック・ポインタ3を−1だけデクレメ
ンして、0”とする。
ンして、0”とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンAの8101番地から実行し、a5゜。番
地迄行ってプログラムAを終わる。
サブルーチンAの8101番地から実行し、a5゜。番
地迄行ってプログラムAを終わる。
以上詳細に説明した様に本発明によれば、マイクロプロ
セッサが暴走した場合、自動的に外部リセットがかかっ
たのと同じ状態となり、暴走状態からの自動復旧が可能
となると云う大きい効果がある。
セッサが暴走した場合、自動的に外部リセットがかかっ
たのと同じ状態となり、暴走状態からの自動復旧が可能
となると云う大きい効果がある。
第1図は本発明の原理図である。
第2図は本発明に依るマイクロプロセッサ暴走防止方式
の一実施例を示す図である。 第3図は従来のサブルーチン・コール/リターンの説明
図、第4図は従来のサブルーチン・コール/リターンの
動作の一例を説明する図である。 図中、1はスタック、2はプログラム・カウンタ、3は
スタック・ポインタ、4はバス、5はメモリ、6はリセ
ット・ベクトル、10は制御部である。
の一実施例を示す図である。 第3図は従来のサブルーチン・コール/リターンの説明
図、第4図は従来のサブルーチン・コール/リターンの
動作の一例を説明する図である。 図中、1はスタック、2はプログラム・カウンタ、3は
スタック・ポインタ、4はバス、5はメモリ、6はリセ
ット・ベクトル、10は制御部である。
Claims (1)
- 【特許請求の範囲】 サブルーチン・リターンを実行する時戻るべきプログラ
ムのアドレスを格納するスタック(1)、該スタック(
1)内に最も新しく格納された該アドレスの格納位置を
指定するスタックポインタ(3)、及びプログラム・カ
ウンタ(2)を有するマイクロプロセッサに於いて、 特定のアドレスを格納するリセット・ベクトル(6)を
設け、 該サブルーチン・リターンを実行した時に使用した該ス
タック(1)に、 該リセット・ベクトル(6)に格納されている前記特定
のアドレスをロードすることを特徴とするマイクロプロ
セッサ暴走防止方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61213218A JPS6368935A (ja) | 1986-09-10 | 1986-09-10 | マイクロプロセツサ暴走防止方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61213218A JPS6368935A (ja) | 1986-09-10 | 1986-09-10 | マイクロプロセツサ暴走防止方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS6368935A true JPS6368935A (ja) | 1988-03-28 |
Family
ID=16635487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61213218A Pending JPS6368935A (ja) | 1986-09-10 | 1986-09-10 | マイクロプロセツサ暴走防止方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS6368935A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002132528A (ja) * | 2000-10-26 | 2002-05-10 | Nec Corp | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 |
-
1986
- 1986-09-10 JP JP61213218A patent/JPS6368935A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002132528A (ja) * | 2000-10-26 | 2002-05-10 | Nec Corp | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2883784B2 (ja) | マイクロコンピュータ | |
JPH04245543A (ja) | サブプログラム呼び出しを実行する方法および装置と コンパイラ装置 | |
JPS62226234A (ja) | スタツクポインタ制御回路 | |
JP2850808B2 (ja) | データ処理装置およびデータ処理方法 | |
EP0285634B1 (en) | Method to execute two instruction sequences in an order determined in advance | |
JPS6368935A (ja) | マイクロプロセツサ暴走防止方式 | |
JPH0443301B2 (ja) | ||
JPS61216035A (ja) | アドレス・スタツクのオ−バ−フロ−処理方法 | |
JP2663895B2 (ja) | Cpuシミュレータ | |
JPS6156816B2 (ja) | ||
KR100280404B1 (ko) | 디에스피에서의 다중 인터럽트 서비스 루틴 지원방법 | |
JPH0235332B2 (ja) | Sainyukanopuroguramuseigyoshorihoshiki | |
JP2572435B2 (ja) | デマンドページング計算機の命令実行方法 | |
JPS6027032A (ja) | プログラム起動方法 | |
JPS6010342A (ja) | 汎用レジスタのリロ−ド制御方式 | |
JPH0512100A (ja) | セルの管理方法及びセル管理テーブル | |
JPH10269081A (ja) | プロセッサおよびその使用方法 | |
JPS62296231A (ja) | マイクロプログラム処理装置におけるサブル−チン処理方式 | |
JPS6221134B2 (ja) | ||
JPH0454548A (ja) | 計算機システムのメモリチエック方式 | |
JPH02224026A (ja) | スタック回路 | |
JPS646487B2 (ja) | ||
JPH0844570A (ja) | プログラム実行システム及び方法 | |
JPS63121929A (ja) | スタツク処理方式 | |
JPH0359727A (ja) | マイクロプロセッサにおける退避・復元方式 |