JPH0484224A - スタックエリア保護回路 - Google Patents

スタックエリア保護回路

Info

Publication number
JPH0484224A
JPH0484224A JP19889790A JP19889790A JPH0484224A JP H0484224 A JPH0484224 A JP H0484224A JP 19889790 A JP19889790 A JP 19889790A JP 19889790 A JP19889790 A JP 19889790A JP H0484224 A JPH0484224 A JP H0484224A
Authority
JP
Japan
Prior art keywords
value
stack area
register
processor
address
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
JP19889790A
Other languages
English (en)
Inventor
Hideaki Fujimori
藤森 英明
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP19889790A priority Critical patent/JPH0484224A/ja
Publication of JPH0484224A publication Critical patent/JPH0484224A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は電子計算機システムにおいて、主記憶装置上の
スタック領域への誤書込みを防止するスタックエリア保
護回路に関する。
〔従来の技術〕
従来、電子計算機システムにおいては、プログラムを実
行する際に、ある関数やサブルーチンから他の関数やサ
ブルーチンを呼び出す場合がある。この場合、実行して
いた関数あるいはサブルーチンの制御情報や戻り番地を
主記憶装置中のスタックエリアに退避する必要がある。
第3図は、関数fが開数gを呼び出したときのスタック
エリアの状態を概略的に示したものである。このとき、
スタックポインタは開数fの制御情報退避領域と開数f
の戻り番地の退避領域とを合計したサイズ分だけ更新さ
れる。
開数gからリターンする時には、退避していた制御情報
を元に戻し、スタックポインタの値を関数gに飛ぶ前の
値に戻し、退避していた戻り番地に戻る。
〔発明か解決しようとする課題〕
上述した従来の退避方式では、主記憶装置中にスタック
エリアを設けているために、プロセッサからスタックエ
リアにデータを書き′込むことが可能である。このなめ
、退避領域であるスタックエリアにプロセッサが誤って
データを書き込む危険性があり、戻り番地等を破壊して
しまう可能性があった。
本発明の目的は上述のスタックエリアへの誤書き込みを
防止することにある。
〔課題を解決するための手段〕 本発明は、ある関数やサブルーチンから他の関数やサブ
ルーチンを呼び出す場合に実行していた前記関数あるい
は前記サブルーチンの制御情報や戻り番地を主記憶装置
中のスタックエリアに退避するとともに退避された前記
制御情報や戻り番地等の情報の前記スタックエリア内に
おける最後尾アドレスをプロセッサ内のスタックポイン
タにセットし、リターン時には前記退避制御情報と前記
スタックポインタの値を前記退避前の状態に戻し前記退
避されていた戻り番地に戻る動作をする情報処理装置に
おけるスタックエリア保護回路において、前記プロセッ
サで動作するソフトウェアにより前記スタックエリアの
始点である基底アドレスをセットされるレジスタと、前
記主記憶装置への書き込みサイクル時のアドレスバス上
の値が前記レジスタの値と前記スタックポインタの値の
一方に等しいかまたは前記レジスタの値と前記スタック
ポインタの値の間にある誤書き込み状態を検出する誤書
き込み検出手段と、前記誤書き込み検出手段により前記
誤書き込み状態が検出された場合は前記プロセッサに通
知するプロセッサ通知手段を有することを特徴とする。
〔実施例〕
次に、本発明について図面を参照して説明する。
第1図は本発明の一実施例を示すブロック構成図である
。第1図において、101はプロセッサ、102はプロ
セッサ101内にあるスタックポインタ、103はスタ
ックエリアを有する主記憶装置、105はスタックエリ
アの基底アドレスを保持するレジスタ、104はアドレ
スバス110のアドレスをデコードしその結果がレジス
タ105を指していればレジスタ105へのデータバス
111からのデータ書き込みをアクティブにするデコー
ダ、106はアドレスストローブ(AS)線112がア
クティブでR/W信号線113がW(ライト)信号の時
、アドレスバス110の値とレジスタ105の値とを比
較し、レジスタ105の値がアドレスバス110の値以
上であれば出力線115をアクティブ(1)にする比較
器、107はアドレスストローブ(AS)線112がア
クティブでR/W信号線113がW(ライト)信号の時
、アドレスバス110の値とスタックポインタ102の
値とを比較し、スタックポインタ102の値がアドレス
バス110の値以下ならば出力線116をアクティブ(
1)にする比較器、108は出力線115の値と出力線
116の値との論理積回路である。
尚、デコーダ104、レジスタ105、比較器106.
107、及び論理積回路108で本発明のスタックエリ
ア保護回路109を構成する。
次に、このように構成されたスタックエリア保護回路1
09の動作説明を行う。尚、本実施例では、スタックエ
リアはアドレスの小さい方へ使用していくものとする。
プロセッサ101で動作するソフトウェア(図示せず〉
は実行時の最初にレジスタ105とスタックポインタ1
02にスタックエリアの基底アドレスをセットする。第
2図はスタックエリア201の構成の一例を示す図であ
り、レジスタ]05は一度セットするとそのまま固定で
あるか、スタックポインタ102の値は関数や、サブル
ーチンコール時に退避領域が増加したり、減少したりし
て動的に変化する。
即ち、関数やサブルーチンコールの為にPUSH命令を
実行すると、スタックエリア201においてスタックポ
インタ102の指すアドレスからアドレスが小さい方向
にデータが退避されるとともに、スタックポインタ10
2の値は、退避されるデータのサイズ分だけ減少する。
次に、関数やサブルーチンからのリターンの為にPOP
命令を実行すると、スタックポインタ102の指すアド
レスからデータを読み出すとともに、読んだデータのサ
イズ分だけスタックポインタの値は増加する。
次に、ソフトウェアが誤ってスタックエリア201に書
き込みを行おうとする場合のスタックエリアの保護動作
を考える。
比較器106は、スタックエリア201の基底アドレス
即ちレジスタ105の値と主記憶装W103への書き込
みサイクル時のアドレスバス110上の値とを比較する
。そして、もしレジスタ105の値がアドレスバス11
0上の値以上ならは出力線115の値を1にする。その
時以外は出力線115の値はOである。
一方、比較器107はスタックポインタ102の値と、
主記憶装置103への書き込みサイクル時のアドレスバ
ス110上の値とを比較する。もし、スタックポインタ
102の値の方がアドレスバス110上の値以下であれ
ば出力線116の値を1にする。その時以外は出力線1
16の値は0である。
比較器106の出力線115の値が1であり、かつ比較
器107の出力線116の値が1のときは、ソフトウェ
アが誤ってスタックエリア201へ書き込もうとする時
である。
このアンド条件が成立すると、論理積回路108の出力
線117の値は1となりプロセッサ101に割り込みに
より通知する。割り込みにより通知されたプロセッサ1
01はプログラムミス発生としてオペレータに通知する
とともに、誤って書き込もうとしたソフトウェアに対し
ては全面的あるいは部分的な機能停止等システムに応じ
た処置を取ればよい。
〔発明の効果〕
以上説明したように本発明によれば、ソフトウェアが誤
ってスタックエリアへ書き込もうとするのを検出し、プ
ロセッサに通知する手段を有することにより、誤書き込
みによるスタックエリアの破壊を有効に防止できる効果
がある。
積回路、109・・・スタックエリア保護回路、110
・・・アドレスバス、111・・データバス、112・
・アドレスストローブ(A、 S )線、113・・・
R/W信号線。

Claims (1)

    【特許請求の範囲】
  1. ある関数やサブルーチンから他の関数やサブルーチンを
    呼び出す場合に実行していた前記関数あるいは前記サブ
    ルーチンの制御情報や戻り番地を主記憶装置中のスタッ
    クエリアに退避するとともに退避された前記制御情報や
    戻り番地等の情報の前記スタックエリア内における最後
    尾アドレスをプロセッサ内のスタックポインタにセット
    し、リターン時には前記退避制御情報と前記スタックポ
    インタの値を前記退避前の状態に戻し前記退避されてい
    た戻り番地に戻る動作をする情報処理装置におけるスタ
    ックエリア保護回路において、前記プロセッサで動作す
    るソフトウェアにより前記スタックエリアの始点である
    基底アドレスをセットされるレジスタと、前記主記憶装
    置への書き込みサイクル時のアドレスバス上の値が前記
    レジスタの値と前記スタックポインタの値の一方に等し
    いかまたは前記レジスタの値と前記スタックポインタの
    値の間にある誤書き込み状態を検出する誤書き込み検出
    手段と、前記誤書き込み検出手段により前記誤書き込み
    状態が検出された場合は前記プロセッサに通知するプロ
    セッサ通知手段を有することを特徴とするスタックエリ
    ア保護回路。
JP19889790A 1990-07-26 1990-07-26 スタックエリア保護回路 Pending JPH0484224A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19889790A JPH0484224A (ja) 1990-07-26 1990-07-26 スタックエリア保護回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19889790A JPH0484224A (ja) 1990-07-26 1990-07-26 スタックエリア保護回路

Publications (1)

Publication Number Publication Date
JPH0484224A true JPH0484224A (ja) 1992-03-17

Family

ID=16398761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19889790A Pending JPH0484224A (ja) 1990-07-26 1990-07-26 スタックエリア保護回路

Country Status (1)

Country Link
JP (1) JPH0484224A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086821A (ja) * 1994-06-20 1996-01-12 Nec Corp マイクロプロセッサ
DE19846673A1 (de) * 1998-10-09 2000-04-20 Siemens Ag Verfahren zur Verbindung von Stackmanipulationsangriffen bei Funktionsaufrufen
JP2002073418A (ja) * 2000-08-25 2002-03-12 Fujitsu Ltd マイクロプロセッサ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086821A (ja) * 1994-06-20 1996-01-12 Nec Corp マイクロプロセッサ
DE19846673A1 (de) * 1998-10-09 2000-04-20 Siemens Ag Verfahren zur Verbindung von Stackmanipulationsangriffen bei Funktionsaufrufen
JP2002073418A (ja) * 2000-08-25 2002-03-12 Fujitsu Ltd マイクロプロセッサ

Similar Documents

Publication Publication Date Title
US7401210B2 (en) Selecting subroutine return mechanisms
JPH0484224A (ja) スタックエリア保護回路
JPH09198258A (ja) タスクスタックオーバーフロー検出回路
JPH05100847A (ja) 情報処理装置のメモリ保護方式
US6397310B1 (en) Method and apparatus for controlling write access to storage means for a digital data processing circuit
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
WO1990005951A1 (en) Method of handling unintended software interrupt exceptions
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
JP3166167B2 (ja) マイクロコンピュータ
JPH0258648B2 (ja)
JPS61279940A (ja) 計算機の異常検出装置
JPH01180656A (ja) メモリ保護装置
JPH06139084A (ja) 情報処理装置
JPS62232054A (ja) スタツクフレ−ム記述子の管理方式
JPS63250753A (ja) メモリアクセスチエツク方式
CN113986480A (zh) 中断服务函数的调用方法及相关装置
JPH07210421A (ja) スレッド環境におけるデバッグ方法
JPS61216059A (ja) 記憶デ−タ保護方式
JPS61279941A (ja) 計算機の異常検出装置
JPS63120336A (ja) メモリアクセスモ−ド切替え方式
JPH0665941U (ja) プログラム動作装置
JPH03208132A (ja) シングルチツプマイクロコンピユータ
JPS5990297A (ja) メモリ管理システム
JPS6228836A (ja) 誤書込み防止回路
JPH06251171A (ja) ノンマスカブル割込機能付きマイクロコンピュータ