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
Application number
JP61213218A
Other languages
English (en)
Inventor
Chihiro Endo
千尋 遠藤
Noboru Kawada
昇 川田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP61213218A priority Critical patent/JPS6368935A/ja
Publication of JPS6368935A publication Critical patent/JPS6368935A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概要〕 サブルーチン・コール/リターンを行うマイクロプロセ
ッサに於いて、特定のアドレスを格納するリセット・ベ
クトルを設け、す・ブルーチン・リターンを実行した時
に使用したスタ・ツクに前記特定のアドレスをロードす
ることによりプログラムの暴走を防止する。
〔産業上の利用分野〕
本発明はマイクロプロセッサ暴走防止方式に関するもの
である。
〔従来の技術〕
一般にマイクロプロセッサがプログラムを実行している
時、暴走が起きることがあることは周知の通りであるが
、此の暴走が発生する原因には色々ある。然し経験的に
暴走の発生は、サブルーチン・コール(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、。。番地
で終わる。
此のように何回もサブルーチン・コール/リターンを行
いながらプログラムを実行するのが普通である。
第4図は従来のサブルーチン・コール/リターンの動作
の一例を説明する図である。
図中、1はスタック、2はプログラム・カウンタ、3は
スタック・ポインタ、4はバス、5はメモリ、10は制
御部である。尚以下全図を通じ同一記号は同一対象物を
表す。
スタック1は次に取り出されるべき番地が、記憶装置内
にある番地の中で最も新しく記憶されたものであるよう
な方法、即ち、後入れ先出し方式(LIFO)の記憶装
置である。
又スタック・ポインタ3はアンプ・ダウン形のカウンタ
であり、スタックlに最も新しく格納された番地の格納
場所を示す。
プログラム・カウンタ2はロード可能なアンプ形のカウ
ンタである。
今前述の例に従ってスタック1、プログラム・カウンタ
2、及びスタック・ポインタ3の動作を説明する。
尚各種プログラムは夫々メモリ5内の指定された番地に
格納されている。例えばプログラム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をコールする。
■先づスタック・ポインタ3が示すアドレスのスタック
・エリア(スタック1内に在る)に、al。1番地を記
入する。尚最初スタック・ポインタ3は“0”とセット
されている。■の操作はサブルーチンBを終了した時、
戻る先を指定して置く為である。
■次にスタック・ポインタ3を+1だけインフレメンし
て、01″とする。
以上の操作(サブルーチン・コール)が終了した後、プ
ログラム・カウンタ2にす。番地をロードしてプログラ
ムBをb00番地ら実行する。
サブルーチンBのbl。番地で更にサブルーチンCをコ
ールする場合にも同様に、 ■先づスタック・ポインタ3が示すアドレスのスタック
・エリアに、b1111番地入する。
■次にスタック・ポインタ3を+1だけインフレメンし
て、2″とする。
以上の操作(サブルーチン・コール)が終了した後、プ
ログラム・カウンタ2にC6番地をロードしてプログラ
ムCをC8番地から実行する。
C6゜番地迄行ってプログラムCが終わると、サブルー
チン・リターンを行う。
■先づスタック・ポインタ3が示すアドレスのスタック
・エリアに格納されているサブルーチンBのb1111
番地ログラム・カウンタ2にロードする。
0次にスタック・ポインタ3を−1だけデクレメンして
、1″とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンBのb1111番地実行し、b5゜番地迄
行ってプログラムBが終わると、再びサブルーチン・リ
ターンを行う。
■先づスタック・ポインタ3が示すアドレスのスタック
・エリアに格納されているサブルーチンAのal。1番
地をプログラム・カウンタ2にロードする。
■次にスタック・ポインタ3を−1だけデクレメンして
、0″とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンAの2101番地から実行し、a、。。番
地迄行ってプログラムAを終わる。
〔発明が解決しようとする問題点〕
然しなから何回もサブルーチン・コール/リターンを繰
り返すうちに、スタック1のスタック・エリアに過去に
使用した不要なデータ等が残っている等の理由によりプ
ログラムの暴走が起きる可能性がある。
本発明の目的は上記原因によるプログラムの暴走を防止
することである。
c問題点を解決するための手段〕 上記問題点は第1図の原理図に示す様にサブルーチン・
リターンを実行する時戻るべきプログラムのアドレスを
格納するスタック1、スタック1内に最も新しく格納さ
れた該アドレスの格納位置を指定するスタックポインタ
3、及びプログラム・カウンタ2を有するマイクロプロ
セッサに於いて、特定のアドレスを格納するりセント・
ベクトル6を設けることにより解決される。
〔作用〕
本発明に依るとサブルーチン・リターンを実行した時に
使用したスタック1に、リセット・ベクトル6に格納さ
れている前記特定のアドレスをロードするので、若しサ
ブルーチン・コール/リターンに際して暴走が起きた場
合には外部リセットがかかった状態と同様な状態となり
、暴走状態からの自動復旧が可能となる。
〔実施例〕
第2図は本発明に依るマイクロプロセッサ暴走防止方式
の一実施例を示す図である。
図中、6はリセット・ベクトルである。
本発明に依るとスタックlにリセット・ベクトル6を付
加する。
本発明に於けるサブルーチン・コールは、従来のサブル
ーチン・コールと同じ動作を行う。
然しサブルーチン・リターンでは、スタック・ポインタ
3が示すアドレスのスタック・エリアに格納されている
番地(戻るべきサブルーチンの再開番地)をプログラム
・カウンタ2にロードした後の場所に、即ち、スタック
・ポインタ2が示すアドレスのスタック・エリアに、リ
セット・ベクトル6に格納されている値を書込む。
リセット・ベクトル6に格納されている値は、プログラ
ムAの開始番地、aoでも良く、又オール0でも良い。
スタック・エリアにリセット・ベクトル6に格納されて
いる値を書込んだ後、スタック・ポインり3を−1だけ
デクレメンする。
此の様にサブルーチン・リターンを行う時、スタック・
ポインタ3が示すアドレスのスタック・エリアに、リセ
ット・ベクトル6に格納されている値を書込むことによ
り、使用済の全てのスタック・エリアにはリセット・ベ
クトル値が入っていることになり、万一プログラム上で
考慮されていないスタックを参照してサブルーチン・リ
ターンが行われても自動的に外部リセットがかかったと
同様にプログラムが初期化され、此のことにより暴走を
検出し、復旧することが可能となる。
尚前述した従来の技術の項で挙げた例に就いて述べると
、サブルーチン・リターンの場合、■゛先づスタック・
ポインタ3が示すアドレスのスタック・エリアに格納さ
れてい・るサブルーチンBのb11番地をプログラム・
カウンタ2にロードする。
■゛スタツクポインタ3が示すアドレスのスタック・エ
リア(令名サブルーチンBのb11番地が格納されてい
たスタック・エリア)に、リセソト・ベクトル6に格納
されている値を書込む。
■”次にスタック・ポインタ3を−lだけデクレメンし
て、1″とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンBのb11番地から実行し、b、。番地迄
行ってプログラムBが終わると、再びサブルーチン・リ
ターンを行う。
■°先づスタック・ポインタ3が示すアドレスのスタッ
ク・エリアに格納されているサブルーチンAのal。3
番地をプログラム・カウンタ2にロードする。
■゛スタツクポインタ3が示すアドレスのスタック・エ
リア(令名サブルーチンAのal。6番地が格納されて
いたスタック・エリア)に、リセット・ベクトル6に格
納されている値を書込む。
[相]゛次にスタック・ポインタ3を−1だけデクレメ
ンして、0”とする。
以上の操作(サブルーチン・リターン)が終了した後、
サブルーチンAの8101番地から実行し、a5゜。番
地迄行ってプログラムAを終わる。
〔発明の効果〕
以上詳細に説明した様に本発明によれば、マイクロプロ
セッサが暴走した場合、自動的に外部リセットがかかっ
たのと同じ状態となり、暴走状態からの自動復旧が可能
となると云う大きい効果がある。
【図面の簡単な説明】
第1図は本発明の原理図である。 第2図は本発明に依るマイクロプロセッサ暴走防止方式
の一実施例を示す図である。 第3図は従来のサブルーチン・コール/リターンの説明
図、第4図は従来のサブルーチン・コール/リターンの
動作の一例を説明する図である。 図中、1はスタック、2はプログラム・カウンタ、3は
スタック・ポインタ、4はバス、5はメモリ、6はリセ
ット・ベクトル、10は制御部である。

Claims (1)

  1. 【特許請求の範囲】 サブルーチン・リターンを実行する時戻るべきプログラ
    ムのアドレスを格納するスタック(1)、該スタック(
    1)内に最も新しく格納された該アドレスの格納位置を
    指定するスタックポインタ(3)、及びプログラム・カ
    ウンタ(2)を有するマイクロプロセッサに於いて、 特定のアドレスを格納するリセット・ベクトル(6)を
    設け、 該サブルーチン・リターンを実行した時に使用した該ス
    タック(1)に、 該リセット・ベクトル(6)に格納されている前記特定
    のアドレスをロードすることを特徴とするマイクロプロ
    セッサ暴走防止方式。
JP61213218A 1986-09-10 1986-09-10 マイクロプロセツサ暴走防止方式 Pending JPS6368935A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132528A (ja) * 2000-10-26 2002-05-10 Nec Corp マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法

Cited By (1)

* Cited by examiner, † Cited by third party
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) マイクロプロセッサにおける退避・復元方式