JPH04205031A - マイクロコンピュータ - Google Patents

マイクロコンピュータ

Info

Publication number
JPH04205031A
JPH04205031A JP2326912A JP32691290A JPH04205031A JP H04205031 A JPH04205031 A JP H04205031A JP 2326912 A JP2326912 A JP 2326912A JP 32691290 A JP32691290 A JP 32691290A JP H04205031 A JPH04205031 A JP H04205031A
Authority
JP
Japan
Prior art keywords
value
stack
nesting level
interrupt
subprogram
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
JP2326912A
Other languages
English (en)
Inventor
Tsuyoshi Inoue
強 井上
Michihiro Mizuno
水野 倫博
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 JP2326912A priority Critical patent/JPH04205031A/ja
Publication of JPH04205031A publication Critical patent/JPH04205031A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、割り込み命令及びサブプログラムの呼び出し
命令を実行するマイクロコンピュータに関する。
〔従来の技術〕
第3図は従来の一般的なマイクロコンピュータの構成を
示すブロック図である。
プログラムカウンタ1は次に実行する命令が格納されて
いる番地を指しており、外部のメモリ(図示せず)の指
された番地の命令がデータバス21を介して取り込まれ
、命令レジスタ2に格納される。命令レジスタ2に格納
された命令は命令デコーダ3により解読され、その命令
に応じた制御を制御回路4で実行する。また論理演算ユ
ニット5は四則演算、判断、シフト等の演算処理を行う
このとき演算に用いるデータ及び演算結果はアキュムレ
ータ6、フラグ7、レジスタ8等に一時的に格納される
スタックポインタ9はメモリに設定されたスタック領域
の先頭番地を示す値を格納するレジスタであり、サブプ
ログラムの呼び出し時及び他の装置からの割り込み要求
による割り込み処理時に機能する。また割り込み制御回
路10は他の装置からの割り込み要求信号lNTRを受
けて、マイクロコンピュータ内部の処理に対して割り込
みを発生する。
次にこのように構成された従来のマイクロコンピュータ
のプログラム実行手順について説明する。
第4図は従来のマイクロコンピュータでアクセスされる
メモリのマツプ図であり、プログラム実行手順を示して
いる。ここではサブプログラム呼び出し処理の実行によ
り、スタックポインタ9及び2つのスタック領域が状態
変化する様子を示している。メモリ22のプログラム領
域には夫々メインプログラム、サブプログラム1、サブ
プログラム2が存在するものとする。メインプログラム
中にはサブプログラム1を呼び出すための呼出し命令1
5が、またサブプログラム1中にはサブプログラム2を
呼び出すための呼出し命令16が夫々含まれる。またメ
モリ22のメモリ領域にはサブプログラム呼び出し時又
は割り込み処理時の戻り先アドレスを退避する2つのス
タック領域17a、17b及びデータ保存等に使用する
ワーク領域18か設けられている。また、スタックポイ
ンタ9の値、つまりサブルーチン呼び出し時の戻り先ア
ドレスを退避するスタック領域の位置の初期値はスタッ
ク領域17aのアドレス値である。
プログラム領域内のメインプログラムを実行していく過
程で、呼出し命令15によりサブプログラム1へ実行が
移る。このとき、サブプログラム1の実行が終了し、再
びメインプログラムへ実行が戻るときの戻り先アドレス
をスタックポインタ9が指す位置に退避する。スタック
ポインタ9の初期状態は前述した如くスタック領域17
aのアドレスを指しており、従って戻り先アドレスはス
タック領域17aに退避される。
戻り先アドレスが退避されるとスタックポインタ9は次
のスタック領域17bを指すようその値が更新される。
ここではスタックポインタ9はスタック領域17a、1
7bのアドレスを差し、スタック領域1.7aからスタ
ック領域17bへ更新するとはスタックポインタ9が指
すアドレスを更新することを意味する。またスタック領
域17a、17b及びワーク領域18は連続したアドレ
ス空間上に存在し、ここではスタック領域17aが若い
アドレスとなる。したがってスタックポインタ9がスタ
ック領域を更新するということはスタックポインタ9が
指すスタック領域17aのアドレスを+1することによ
り、スタック領域17bのアドレスを指すことをいう。
戻り先アドレスがスタック領域17aに退避され、スタ
ックポインタ9が更新されたときこの状態をネスティン
グレベル1といい、戻り先アドレスが18M退避されて
いることを意味する。
サブプログラム1に実行が移り、命令を実行していく過
程で呼出し命令工6によりさらにサブプログラム2に実
行が移る。このときも前述したときと同様にスタックポ
インタ9の指すスタック領域17bにサブプログラム1
への戻り先アドレスを退避し、さらにスタックポインタ
9を更新し、サブプログラム2に実行が移る。スタック
ポインタ9の指すスタック領域はアドレスを+1するこ
とによりスタック領域17bからワーク領域18となる
戻り先アドレスがスタック領域17bに退避されスタッ
クポインタ9が更新されたとき、この状態をネスティン
グレベル2といい、戻り先アドレスが2種類退避されて
いることを意味する。
ここでは、スタック領域17a、 17bが2領域しか
確保されていないことからネスティングレベルは2まで
ということになる。
サブプログラム2の実行が終了すると、サブプログラム
1に実行が戻るわけであるが、このときスタックポイン
タ9の指すアドレスはワーク領域18を示しているので
、このアドレスを−1してスタック領域17bに戻し、
このスタック領域17bに退避されている戻り先アドレ
スを参照してサブプログラム1に実行を戻す。さらにサ
ブプログラム1の実行が終了すると、前述したときと同
様にスタックポインタ9の示すアドレスを−1してスタ
ック領域17aに戻し、このスタック領域17aに退避
されている戻り先アドレスを参照しメインプログラムに
実行を戻す。
〔発明が解決しようとする課題〕
従来のマイクロコンピュータにおいてサブプログラム2
中にさらに呼出し命令が存在した場合、サブプログラム
2の戻り先アドレスを退避する領域がワーク領域になり
スタック領域を超えてしまう。ワーク領域は通常、各種
データの記憶又は制御データの保存等に使用しているた
め、この領域に戻り先アドレスを退避すると、記憶又は
保存しているデータを破壊し、最悪、マイクロコンピュ
ータの暴走を引き起こす可能性がある。このように、メ
モリ領域に確保されたスタック領域を超えては戻り先ア
ドレスを保存することは出来ないが、従来のマイクロコ
ンピュータではそれを未然に防(ことができないという
問題があった。
また、プログラム開発時においても、プログラムの複雑
化(大容量化)、複数の設計者乙こよる共同開発などに
より、プログラムのネスティングレベルを厳密に把握す
ることが不可能となり、これを把握すると、プログラム
開発効率が悪くなるという問題があった。
この発明は上記のような問題点を解消するためになされ
たものであり、スタックのネスティングレベルを自動的
にカウントし、このカウント値が予めプログラムにより
設定された値と同値になった時、現在実行している処理
から予め指定されている処理に強制的に移行することに
より、ネスティングレベルがスタック領域を超えること
によるマイクロコンピュータの暴走又は他のワーク領域
の破壊を防ぐことができると共に、ネスティングレベル
の把握を不要となし、プログラム開発効率を上げること
ができるマイクロコンピュータを提供することを目的と
する。
〔課題を解決するための手段〕
本発明に係るマイクロコンピュータは、メモリ上のスタ
ックのネスティングレベルを計数手段で計数し、それと
格納手段に格納された格納値とを比較し、比較結果に基
づき所定の処理を実行するようにしたものである。
〔作用〕
本発明においてはプログラムが実行され、割り込み命令
又はサブプログラムの呼出し命令が実行される都度、ネ
スティングレベルが計数され、それと格納手段に格納さ
れた所定値とが比較される。
この格納値は最大ネスティングレベルにl5fflJし
て定められており、比較結果が一致していることを示し
ている場合、例えば異常処理等の所定の処理が実行され
、ネスティングレベルがスタックの数を超えることがな
くなる。
〔実施例〕
以下本発明をその実施例を示す図面に基づいて詳述する
第1図は本発明に係るマイクロコンピュータの構成を示
すブロック図である。プログラムカウンタ1は次に実行
する命令が格納されている番地を指しており、外部のメ
モリ(図示せず)の指された番地の命令がデータバス2
1を介して取り込まれ、命令レジスタ2に格納される。
命令レジスタ2に格納された命令は命令デコーダ3によ
り解読され、その命令に応じた制御を制御回路4で実行
する。
また、論理演算ユニット5は四則演算、判断、シフト等
の演算処理を行う。このとき演算に用いるデータ及び演
算結果はアキュムレータ6、フラグ7、レジスタ8等に
一時的に格納される。
スタックポインタ9はメモリに設定されたスタック領域
の先頭番地を示す値を格納するレジスタであり、サブプ
ログラムの呼び出し時及び他の装置からの割り込み要求
による割り込み処理時に機能する。また割り込み制御回
路10は他の装置からの割り込み要求信号lNTR又は
後述する割り込み要求回路14からの割り込み要求信号
を受けて、マイクロコンピュータ内部の処理に対して割
り込み又は所定の処理の実行要求を発生する。
スタックポインタ9の状態はネスティングレベルカウン
タ11で把握され、その状態からネスティングレベルが
カウントされる。ネスティングレベルカウンタ11のカ
ウント値は比較回路13に与えられ、そこでプログラム
上で任意の値に設定可能な比較レジスタ12の格納値と
比較される。比較結果は割り込み要求回路14に与えら
れ、割り込み要求回路I4は比較回路13の出力に基づ
き、割り込み制御回路10に割り込みを要求する。この
実施例では比較レジスタ12の格納値とネスティングレ
へルカウンタ11の値とが同しであれば割り込み要求回
路14が機能して割り込み制御回路10に割り込みを要
求する。
次にこのように構成された本発明のマイクロコンピュー
タのプログラム実行手順について説明する。第4図は本
発明のマイクロコンピュータでアクセスされるメモリの
マンブ図であり、プログラム実行手順を示している。こ
こではサブプログラム呼出し処理の実行によりスタック
ポインタ9及び3つのスタック領域が状態変化する様子
を示す。
メモリ22のプログラム領域には夫々メインプログラム
、サブプログラム1、サブプログラム2、サブプログラ
ム3が存在するものとする。メインプログラム中には比
較レジスタ12に任意の値を設定する設定命令19及び
サブプログラム1を呼び出すための呼出し命令15が、
またサブプログラム1中にはサブプログラム2を呼び出
すための呼出し命令16が、またサブプログラム2中G
こはサブプログラム3を呼び出すための呼出し命令20
が夫々含まれる。またメモリ22のメモリ領域には→t
ブプログラム呼び出し時又は割り込み処理時の戻り先ア
ドレスを退避する3つのスタック領域17a、 17b
、 17c及びデータ保存時に使用するワーク領域18
が設けられている。また、スタックポインタ9の値、つ
まりサブルーチン呼び出し時の戻り先アドレスを退避す
るスタック領域の位置の初期値はスタック領域17aの
アドレス値である。
プログラム領域内のメインプログラムを実行していく過
程で設定命令19により比較レジスタ12に任意の値が
設定される。この例では値“3”が設定されたものとす
る。引き続き呼出し命令15によりサブプログラム1へ
実行が移る。このとき、サブプログラム1の実行が終了
し、再びメインプログラムへ実行が戻るときの戻り先ア
ドレスをスタ、7クポインタ9が指す位置に退避する。
スタックポインタ9の初期状態は前述した如くスタック
領域17aのアドレスを指しており、従って戻り先アド
レスはスタック領域17aに退避し、スタックポインタ
9の値を更新する。
ネスティングレベルカウンタIIは初期値が“0”であ
り、スタックポインタ9が更新されるたびに+1カウン
トされる。したがってサブプログラム1に実行が移った
時点でネスティングレベルカウンタ11の値は“1”と
なる。さらに比較回路13によりネスティングレベルカ
ウンタ11の値と比較レジスタ12の値とを比較し、そ
の比較結果を割り込み要求回路14に送る。割り込み要
求回路14では比較の結果、ネスティングレベルカウン
タ11の値と比較レジスタ12の値とが同じであれば割
り込み制御回路10に対し割り込み要求信号を発する。
この時点ではネスティングレベルカウンタ11の値が“
1″、比較レジスタ12の値が“32であるので割り込
み要求信号は発しない。同様に呼出し命令16により実
行がサブプログラム2に移る。このとき、サブプログラ
ム1への戻り先アドレスをスタックポインタ9が示すア
ドレスのスタック領域17bに退避し、スタックポイン
タ9の値を更新する。
ネスティングレベルカウンタ11の(直は+1され“2
”となるが、ネスティングレベルカウンタ11と仕較レ
ジスタ12とが同値でないため割り込み要求回路14は
割り込み要求を発生しない。さらに呼出し命令20によ
りサブプログラム3に実行が移る。
このときサブプログラム2への戻り先アドレスをスタッ
クポインタ9が示すアドレスのスタック領域17cに退
避し、スタックポインタ9を更新する。
ネスティングレベルカウンタ11は+1され“3″とな
り、予め比較レジスタ12に設定した値と同値になる。
比較回路13はこの比較結果を割り込み要求回路14に
送り、割り込み要求回路14は比較結果が同値であるこ
とから割り込み制御回路10に対し割り込み要求信号を
発する。割り込み制御回路10は割り込み要求信号を受
けとると、実行は強制的に異常処理プログラムに移され
、それを実行する。
このことにより、ワーク領域18の内容を破壊すること
によるマイクロコンピュータの暴走を未然に防ぎ、予め
指定された異常処理プログラムの処理内容により通常処
理への復帰が可能となる。このように戻り先アドレスを
退避できるスタック領域の大きさに対応した値を比較レ
ジスタ]2ムこ設定しておくことにより、この領域を超
えて他のワーク領域に戻り先アドレスを退避することが
防止できる。この例では退避可能な領域はスタック領域
17a、 17b、 17cの3種類であり、誤ってワ
ーク領域18に退避する状態はネスティングレベル4と
なる。
従って比較レジスタ12に値“3”を設定しておくこと
により、ネスティングレベル3で割り込み要求回路14
より割り込み要求が発生し、異常処理プログラムを実行
することになる。
なお、本実施例では比較レジスタの値とネスティングレ
ベルカウンタの値との一致により割り込み要求を発生し
、所定の処理を実行したが、本発明はこれに限るもので
はなく、比較結果に基づき所定の処理を実行するのであ
ればどのような手段を用いてもよいことは言うまでもな
い。
〔発明の効果〕
以上説明したとおり、本発明においてはスタックのネス
ティングレベルをカウントし、そのカウンタ値と、別に
設定した値とを比較し、その結果により現在の実行処理
を中断して別処理に強制移行するようにしたので多重の
割り込み、又:よりブプログラム呼び出じの発生による
スタック領域以外への戻り先アドレスの退避、さらにそ
れによりデータ破壊、暴走を未然に防くことができると
共にネスティングレベルの把握を不要となし、プログラ
ムの開発効率を向上させることができる等優れた効果を
奏する。
【図面の簡単な説明】
第1図は本発明に係るマイクロコンピュータの構成を示
すブロック図、第2図は本発明のマイクロコンピュータ
でアクセスされるメモリのマツプ図、第3図は従来のマ
イクロコンピュータの構成を示すブロック図、第4図は
従来のマイクロコンピュータでアクセスされるメモリの
マツプ図である。 9・・・スタックポインタ 10・・・割り込み制御回
路11・・・ネスティングレへルカウンタ 12・・・
比較レジスタ 13・・・比較回路 14・・・割り込
み要求回路15.16.20・・・呼出し命令 17a
、17b、17cmスタック領域 19・・・設定命令
 22・・・メモリなお、図中、同一符号は同一、又は
相当部分を示す。 代理人   大   岩   増   雄ニブログラム
禦域 19・設定命令 17aj ’7b、1 ”7c・スタック領域22・メ
玉ソ 第    2    図 ニブログラム葉板 −一一−−−−−−−−−第   
4   図 手続補正書(自発) 平成3年8月5日 1、事件の表示  特願!  2−326912号  
   μ″6 2、発明の名称 マイクロコンピュータ 3、補正をする者 5、 補正の対象 明細書の「発明の詳細な説明」の欄及び図面6、補正の
内容 6−1明細書の「発明の詳細な説明」の欄明細書の第1
1頁7行目に「第4図」とあるのを「第2図]と訂正す
る。 6−2図面 第2図及び第4図を添付図面の如くに訂正する。 7、添付書類の目録 (1)訂正図面            1通jプログ
ラム蒙域 第   4   図

Claims (1)

    【特許請求の範囲】
  1. (1)他の装置からの割り込み命令又はサブプログラム
    の呼出し命令の入力時にメモリ上のスタックに戻り先ア
    ドレスを退避させ、前記割り込み命令又は呼出し命令を
    実行するマイクロコンピュータにおいて、 前記スタックのネスティングレベルを計数 する計数手段と、 任意の値を設定できる格納手段と、 前記計数手段の計数値と、前記格納手段の 格納値とを比較する手段と、 この比較結果に基づき、現在実行中の命令 に従う処理を中断し、所定の処理を実行する手段と を備えることを特徴とするマイクロコンピ ュータ。
JP2326912A 1990-11-29 1990-11-29 マイクロコンピュータ Pending JPH04205031A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2326912A JPH04205031A (ja) 1990-11-29 1990-11-29 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2326912A JPH04205031A (ja) 1990-11-29 1990-11-29 マイクロコンピュータ

Publications (1)

Publication Number Publication Date
JPH04205031A true JPH04205031A (ja) 1992-07-27

Family

ID=18193142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2326912A Pending JPH04205031A (ja) 1990-11-29 1990-11-29 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JPH04205031A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04317142A (ja) * 1991-04-16 1992-11-09 Matsushita Electric Ind Co Ltd マイクロコンピュータのプログラム・デバッグ装置
JP4690576B2 (ja) * 2001-04-26 2011-06-01 パナソニックシステムネットワークス株式会社 ソフトウェアモデム及びそれを備えた通信端末装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04317142A (ja) * 1991-04-16 1992-11-09 Matsushita Electric Ind Co Ltd マイクロコンピュータのプログラム・デバッグ装置
JP4690576B2 (ja) * 2001-04-26 2011-06-01 パナソニックシステムネットワークス株式会社 ソフトウェアモデム及びそれを備えた通信端末装置

Similar Documents

Publication Publication Date Title
US5557766A (en) High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank
US5812868A (en) Method and apparatus for selecting a register file in a data processing system
US5701493A (en) Exception handling method and apparatus in data processing systems
KR100848603B1 (ko) 데이터 처리장치와 복귀상태의 저장방법
US4794515A (en) Protection of data in a multiprogramming data processing system
JPH04205031A (ja) マイクロコンピュータ
EP1713000A1 (en) Memory protection system
JP3539984B2 (ja) プロセッサ
JPS61173358A (ja) データ処理装置
KR960012354B1 (ko) 마이크로 프로세서
JPS59218569A (ja) マイクロ・コンピユ−タ
JPH02133842A (ja) 中間バッファプリフェッチ制御方式
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JPH03127126A (ja) 情報処理装置
JPH02173828A (ja) 割込み処理方式
JP2572435B2 (ja) デマンドページング計算機の命令実行方法
WO1990005951A1 (en) Method of handling unintended software interrupt exceptions
JP3239042B2 (ja) マイクロコンピュータ
JPS6353650A (ja) 計算機
JPS60215248A (ja) 情報処理方式
JPS62151936A (ja) マイクロプロセツサに内蔵されるキヤツシユ回路
JPH0259933A (ja) マイクロプロセッサ
JPH0221614B2 (ja)
JPH03208132A (ja) シングルチツプマイクロコンピユータ
JPH02304624A (ja) 情報処理装置