JPH02239329A - スタック管理システム - Google Patents

スタック管理システム

Info

Publication number
JPH02239329A
JPH02239329A JP6162489A JP6162489A JPH02239329A JP H02239329 A JPH02239329 A JP H02239329A JP 6162489 A JP6162489 A JP 6162489A JP 6162489 A JP6162489 A JP 6162489A JP H02239329 A JPH02239329 A JP H02239329A
Authority
JP
Japan
Prior art keywords
stack
area
stack area
data
main memory
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
JP6162489A
Other languages
English (en)
Inventor
Masaaki Iwasaki
正明 岩崎
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP6162489A priority Critical patent/JPH02239329A/ja
Publication of JPH02239329A publication Critical patent/JPH02239329A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 [発明の目的] (産業上の利用分野) この発明は、マイクロプロセッサを使用する場合に利用
されるスタック管理システムに関する。
(従来の技術) 一般に、マイクロプロセッサを使用する場合、主メモリ
の一部にはスタックエリアが確保される。
スタックエリアは、作業領域として用いられユーザが構
築したプログラムが実行される途中において、・一時的
にデ〜タを保持する場合に利用される。
格納されたデータが利用された後は、スタックエリアの
データは不要となる。
ところで、従来のマイクロプロセッサにおいては、上記
スタックエリアの容量は、ユーザが指定する範囲(アプ
リケーションプログラムによる)に限定されているが、
この確保する容量の判断を誤ると、データのオーバーフ
ローを生じてしまう。
このデータのオーバーフローを生じると、他のデータや
プログラムを破壊してしまうことになる。
(発明が解決しようとする課題) 上記したように、確保したスタックエリアのデータオー
バーフローが生じると、他のデータやプログラムデータ
の破壊を生じてしまう。そこで、このような事態を防止
するために、スタックがアクセスされるごとに、オーバ
ーフローが生じないかどうかを判定する別の処理ルーチ
ンを付加することが考えられる。
しかしながら、上記の処理ルーチンを構築する方法は、
ユーザにとっては、そのプログラムを作成しなければな
らず手間がかかるという問題がある。また、スタックエ
リアがアクセスされる毎にこのプログラムを実行させる
ことは、それだけ時間が必要であり、時間的に制限を受
けた制御機器にこのようなマイクロプロセッサを用いる
ことは不向きである。
そこでこの発明は、スタックエリアのオーバーフローを
容品に検知し、しかも、ユーザーが特別なスタックオー
バーフロ一対策用のプログラムを構築しなくても多少の
オーバーフローであればこれを吸収することができるス
タック管理システムを提供することを目的とする。
〔発明の構成] (課題を解決するための手段) この発明は、プログラムの命令により主メモリ内に確保
されたスタックエリアのデータ格納状況を示すスタック
ポインタが,設定値を越えたか否かを検出する手段と、
前記スタックポインタが設定値を越えていなければ,前
記主メモリのスタックエリアにデータを書込む手段と、
前記スタックポインタが設定値を越えていれば,前記主
メモリとは別に予め設計段階で確保されている予備のメ
モリエリアに前記データを書込む手段とを備えるもので
ある。
(作用) 上記の手段により、ユーザは主メモリに対するスタック
エリアを確保してアプリケーションプログラムを構築す
るだけで、主メモリのスタックエリアのオーバーフロー
が生じたとしても多少のオーバーフローであればこれを
吸収して、ユーザの手間を軽減できるとともに動作の信
頼性を向上できる。
(実施例) 以下、この発明の実施例を図面を参照して説明する。
第1図はこの発明の一実施例である。11は、マイクロ
プロセッサに接続される主メモリであり、このメモリに
はプログラムや利用する固定データ、さらに一時的に格
納しておくデータを書込みまた読み出すことができる。
この主メモリ11には、ユーザがアブリケーションプロ
グラムを組むときに、スタックエリア111を確保する
。このスタックエリア111は、例えばサブルーチンに
より得られた演算結果(データ)を一時的に格納するた
めに利用される。
さらに、このシステムでは主メモリ11のスタックエリ
アの蝿に、マイクロプロセッサ内部に予備スタックエリ
ア222が確保されている。この予備スタックエリア2
22は、ユーザがプログラムを作成するときに確保する
のではなく、マイクロプロセッサ自体を設計する段階で
、予め確保されている。
次に、上記スタックエリア111、222にデータが格
納された場合、その状態を監視するスタックポインタが
利用される。つまり、スタックポインタは、スタックエ
リアに対してどれだけのデータが格納されているかを流
動的に示すデータである。このデータは、例えばスタッ
クがアクセスされるごとに計数を行なうレジスタから得
られる。
以下、スタックポインタとして、主メモリ11側のスタ
ックポインタをSP1予備スタックエリア用のスタック
ポインタをPSPとして説明する。
第2図は、上記スタックエリアがアクセスされたときに
自動的に動作するプログラムであり、予めマイクロプロ
セッサに組込まれている。
スタックエリアがアクセスされると、エリアに対してデ
ータがオーバーフローしているか否か、つまりスタック
ポイントSPが、正か負かを判定する(ステップsl,
s2)。正であれば、オーバーフローが生じていないこ
とであり、主メモリ11内のスタックエリア111にデ
ータの書込みが行われる(ステップs3)。そして、ス
テップs4において、予備スタックエリア222のスタ
ックポイントPsi” (負)の設定が行われる。
次にステップS5においては、マイクロプロセッサの状
態を表わすレジスタ30(第3図(a)参照)のスタッ
ク情報位置にSO−0というデータが書込まれ、次の処
理に移る。
次に、ステップS2において、スタックポインタSPが
負であった場合、ステップs6に移行する。このステッ
プs6は、予備スタックエリアのスタックポイントを設
定するステップである。つまり、主メモリ11側のスタ
ックポインタSPが負になっているので、ステップS4
で設定したスタックボンタPSP″に加算してみる。こ
こで、初めてこのルーチンが実行される場合は、スタッ
クポイントPSPは正となり、ステップS7で正が確認
され、予備スタックエリアS8にデータが書込まれる。
そしてステップS9では、スタック情報位置にSO−0
というデータが書込まれ、次の処理に移る。これは、全
スタックエリアを見た場合、主メモリ〕1のスタックエ
リア111はオ−バーフローしているが、予備スタック
エリア222に余裕があるからである。ステップs6、
s7、S8、S9のルーチンが何回も利用され、予備ス
タックポインタPSPの負がステップs7で検出される
と、この場合は、全スタックエリアのオーバーフローを
生じたことを意味する。この場合は、第3図(b)のマ
スクレジスタ32の一部にスタックエリアオーバーフロ
ー情報SOEのエリアを設けておき、これに割込みイネ
ーブル情報として“1#が書込まれる。すると、スタッ
クオーバーフロー割込みベクタ(ユーザにより予めプロ
グラムされている)(第3図(C)参照)にジャンプし
て特定の処理が行われる(ステップs10)。そして、
ステップallにおいては、状態レジスタのスタック情
報をSO−1として通常のアプリケーションに移る。
状態レジスタ30の内容が例えばプリンタに打出される
と、ユーザは、オーバーフローが生じたか否かを知るこ
とができる。
第4図は、全フタックエリアのオーバーフローを自動的
に検出できるようなアプリケーションプログラムの実行
例を示している。スタックのベース,及びスタック長を
設定し(ステップS22)、スタックオーバーフロー割
込みが発生した場合処理すべき手続きの先頭番地を割込
みベクタとして設定する(ステップ823)。次にステ
ップs24で、マスクレジスタのスタックエリアオーバ
ーフロー情報SOEをイネーブルにし割込みを許可し、
通常のアプリケーション処理(ステップS25)が実行
されるように設定される。
上記したように、この実施例によると、スタックエリア
ポインタを利用して、スタックエリアのオーバーフロー
を容易に検知できる。
次に、スタックエリアのオーバーフローが生じた場合は
、主メモリとは別のメモリに予備スタックエリアを予め
確保しておき、ここにデータが一時格納できるので、ユ
ーザが設定したスタックエリア(主メモリ内部)をオー
バーフローする事態が生じてもこれを吸収できる。この
ことは、ユーザは、主メモリに設定するスタックエリア
を予め想定するデータ量のぎりぎりのところで設定して
も良いことを意味する。しかもその想定が僅が狂ってい
ても、オーバーフローを吸収できるので、プログラム設
計が容易となる。これに加えて、予備スタックエリアは
、予めマイクロコンピュータ設計時に、隠れて確保され
ているので、ユーザがこれを意識してプログラムを設計
する必要はなく、プログラム設計が容易である。
更に、上記した状態レジスタやマスクレジスタの内容は
、一連のアプリケーションプログラムの試験の途中ある
いは、終了時にディスプレイ、あるいはプリントアウト
を行なうことにより、スタックエリアのオーバーフロー
が発生したか否かを確認することができる。これにより
、主メモリ内部のスタックエリアのベースやスタック長
さの修正も可能となる。さらに、第2図のステップS6
、s7.s8をルーチンを実行したか否かを判定するた
めに、このルーチンの実行を示す状態フラッグが得られ
るようにしてもよい。そしてこれをレジスタに格納する
ようにすれば、演算処理の内容に応じて、主メモリのス
タックエリアのオーバーフローが生じたか否かを示す情
報を得ることも可能となる。
[発明の効果] 以上説明したように、この発明はスタックエリアのオー
バーフローを容易に検知し、しかも、ユーザーが特別な
スタックオーバーフロ一対策用のプログラムを構築しな
くても多少のオーバーフローであればこれを吸収するこ
とができる。そして特に、主メモリの容量が限られてい
るようなオンボードコンピュータのプログラムを・開発
するには極めて有用である。
【図面の簡単な説明】
第1図はこの発明の一実施例を説明するためのメモリ構
成を示す説明図、第2図はこの発明によるシステムの動
作手順を示すフローチャート、第3図はこの発明のシス
テムにて利用されるレジスタ及びベクタのデータ内容を
示す説明図、第4図はスタックエリアオーバーフロー時
に利用される割込み処理ルーチンの説明図である。 11・・・主メモリ、111・・・スタックエリア、2
22・・・予備スタックエリア。

Claims (1)

  1. 【特許請求の範囲】 プログラムの命令により主メモリ内に確保されたスタッ
    クエリアのデータ格納状況を示すスタックポインタが、
    エリア設定値を越えたか否かを検出する手段と、 前記スタックポインタが設定値を越えていなければ、前
    記主メモリのスタックエリアにデータを書込む手段と、 前記スタックポインタが設定値を越えていれば、前記主
    メモリとは別に予め設計段階で確保されている予備のメ
    モリエリアに前記データを書込む手段とを具備したこと
    を特徴とするスタック管理システム。
JP6162489A 1989-03-14 1989-03-14 スタック管理システム Pending JPH02239329A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6162489A JPH02239329A (ja) 1989-03-14 1989-03-14 スタック管理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6162489A JPH02239329A (ja) 1989-03-14 1989-03-14 スタック管理システム

Publications (1)

Publication Number Publication Date
JPH02239329A true JPH02239329A (ja) 1990-09-21

Family

ID=13176521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6162489A Pending JPH02239329A (ja) 1989-03-14 1989-03-14 スタック管理システム

Country Status (1)

Country Link
JP (1) JPH02239329A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105019A (ja) * 1993-10-07 1995-04-21 Nec Corp 命令シミュレータ処理方式
JP2007042131A (ja) * 1995-10-06 2007-02-15 Patriot Scientific Corp 縮小命令セット・コンピュータ・マイクロプロセッサーの構造

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105019A (ja) * 1993-10-07 1995-04-21 Nec Corp 命令シミュレータ処理方式
JP2007042131A (ja) * 1995-10-06 2007-02-15 Patriot Scientific Corp 縮小命令セット・コンピュータ・マイクロプロセッサーの構造

Similar Documents

Publication Publication Date Title
EP0464615A2 (en) Microcomputer equipped with DMA controller
EP0316904A2 (en) Arithmetic processor performing mask and trap operations for exceptions
EP0290942B1 (en) Guest machine execution control system for virtual machine system
JPH02239329A (ja) スタック管理システム
JPH03175537A (ja) デバッグ用マイクロプロセッサのエラー制御装置
JPS599937B2 (ja) 情報処理装置
JPH04266141A (ja) スタックオーバーフロー検出方式
CN211236890U (zh) 栈溢出的检测装置和电子设备
JP3317361B2 (ja) メモリのバッテリバックアップ制御方式
EP2953028A1 (en) Computer device and control method for computer device
JPH0668725B2 (ja) データ処理システムにおける割込条件に応答する装置及び非同期割込条件に応答する方法
JP3124788B2 (ja) 組込型マルチタスクオペレーティングシステムの例外処理方法
JP3130798B2 (ja) バス転送装置
JP3330767B2 (ja) 情報処理装置および情報処理装置におけるトレース取得方法
JP2551075B2 (ja) オーバレイ構造プログラム実行方式
JPS59177660A (ja) 電子計算機における診断結果のロギング方式
JPH0232651B2 (ja)
JP2677043B2 (ja) プログラム開発支援装置
JPH045729A (ja) プロセッサ装置
JPS621042A (ja) 電子計算機
JPS61267861A (ja) マルチプロセツサ装置
JPH0772874B2 (ja) 割込み受取り装置
JPS6243740A (ja) マイクロプロセツサ装置の暴走対策回路
JPH01166145A (ja) Cpu監視装置
JPH0113131B2 (ja)